2016-10-24 21 views
1

我有字段列表:的LINQ to SQL如何做「其中(值列表)[專欄]」

var Fields_Of_User = (from item in db.Field_Relationship 
            where item.User_ID == ID_Of_User 
            select item.Field_ID 
            ).ToList(); 

我想通過列表字段選擇問題

 var Questions = (from item in db.Questions 

            where Fields_Of_User.Any(fieldid => fieldid.Equals(item.Field_ID)) 
            select item 
          ); 

然後,我把它放到Viewbag

ViewBag.Questions= Questions; 

看來,我把它叫做:

@foreach (var t in ViewBag.Questions) 
{} 

我得到的錯誤:

Unable to cast the type 'System.Nullable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' to type 'System.Object'. LINQ to Entities only supports casting EDM primitive or enumeration types.

的問題:

where Fields_Of_User.Any(fieldid => fieldid.Equals(item.Field_ID)) 

但我不知道如何解決它。

+0

試'Fields_Of_User.Any(fieldid => fieldid.Field_ID == item.Field_ID)' –

+0

它在Fieldid.Field_ID –

回答

1

問題很可能是第一個查詢生成可爲空的int s的列表,而搜索需要非空的列表。既然你將不匹配null反正,你可以篩選非空值,並在第一個查詢轉換爲int

var Fields_Of_User = (from item in db.Field_Relationship 
    where item.User_ID == ID_Of_User && item.Field_ID != null 
    select (int)item.Field_ID 
).ToList(); 

第二查詢需要如下重寫:

var Questions = (from item in db.Questions 
    where Fields_Of_User.Any(fieldid => fieldid == item.Field_ID) 
    select item 
); 
+0

中得到了一個錯誤這個語句不起作用: –

+0

這個語句不起作用:Fields_Of_User.Contains(item.Field_ID) –

+0

@ ThếHiệp你會得到什麼錯誤? – dasblinkenlight