2010-02-23 168 views
0

您好我有一个模型,其中i有条件计算行数: uscitaservizio == false并且ACCOUNTID属性(INT)是在一个字符串filtrodipe实体框架嵌套条件

ES:filtrodipe =“2,4 ,5,6"

我已经与这个尝试:

db.TDP_Missioni.Count(p => p.UscitaServizio == false && 
        (objUser.FiltroDipe != null ? (p.AccountID.ToString() in objUser.FiltroDipe.Split(',')) : true)) 

但它是不正确。

我该怎么办?

感谢

回答

0

在这样我通常会拉开我的查询逻辑,以保持它更易于阅读的情况下(离开在线有条件进行查询本身的)。为了简化我的示例,我并不安全地解析accountIds,但我建议在最终代码中这样做(使用int.TryParse()代替)。

var missions = db.TDP_Missioni.Where(p => !p.UscitaServizio); 

if (objUser.FiltroDipe != null) 
{ 
    var accountIds = objUser.FiltroDipe.Split(',').Select(a => int.Parse(a)); 
    missions = missions.Where(m => accountIds.Contains(m.AccountID)); 
} 

var missionCount = missions.Count(); 

如果您希望将这一切全部保存在一个查询中,则需要查看的关键部分是accountIds.Contains(m.AccountID)
更改(p.AccountID.ToString() in objUser.FiltroDipe.Split(','))objUser.FiltroDipe.Split(',').Contains(p.AccountID.ToString())应该做的伎俩,但我真的建议处理整数而不是字符串。