C# 在IEnumerable中包含的linq

C# 在IEnumerable中包含的linq,c#,linq,ienumerable,contains,C#,Linq,Ienumerable,Contains,但它不工作,错误消息: 实例参数:无法从“System.Collections.Generic.IEnumerable”转换为“System.Linq.IQueryable” 如何根据selSender id获取包含的数据?看起来属性CreatedByUserID的类型为Nullable。您需要使用它的值来验证selSender是否包含它: RadGrid1.DataSource = messages.Where(m => selSender.Contains(m.CreatedByUs

但它不工作,错误消息:

实例参数:无法从“System.Collections.Generic.IEnumerable”转换为“System.Linq.IQueryable”


如何根据selSender id获取包含的数据?

看起来属性
CreatedByUserID
的类型为
Nullable
。您需要使用它的值来验证selSender是否包含它:

 RadGrid1.DataSource = messages.Where(m => selSender.Contains(m.CreatedByUserID));

我认为这很好,但在我的例子中,我需要在我尝试的linq查询之外使用selssender.Contains(m.CreatedByUserID):RadGrid1.DataSource=来自消息中的mes,其中selssender.Contains(mes.CreatedByUserID)选择mes;获取错误:实例参数:无法从“int[]”转换为“System.Linq.IQueryable”@user1450667在您请求查询结果之前(例如,通过使用foreach或调用ToList),不会执行Linq查询。因此,在您的情况下,在应用
。Where
之前不会执行查询。它将仅在
RadGrid.DataSource
setter内执行。
 RadGrid1.DataSource = messages.Where(m => selSender.Contains(m.CreatedByUserID));
RadGrid1.DataSource = from m in myEntities.Messages                          
                      where m.CreatedByUserID.HasValue &&
                            selSender.Contains(m.CreatedByUserID.Value)
                      select new { 
                          m.Id,
                          m.MessageText,
                          m.CreatedByUserID 
                      };