2010-02-23 167 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())應該做的伎倆,但我真的建議處理整數而不是字符串。