简体   繁体   English

linq其中包含在IEnumerable中

[英]linq where Contains in IEnumerable

//\\ ---- selected items from ChechBoxList
IEnumerable<int> selSender = (from ListItem item in CheckBoxList1.Items.OfType<ListItem>()
                                       where item.Selected
                                       select Convert.ToInt32(item.Value));

//\\ --- linq query
var messages = from m in myEntities.Messages
select new {
m.Id,
m.MessageText,
m.CreatedByUserID
};

my problem is: i need to get data filtered by selected items from CheckBoxList "selSender" I tried the following: 我的问题是:我需要从CheckBoxList“ selSender”中按选定的项目过滤数据,我尝试了以下操作:

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

But it's not working, error message: 但这不起作用,错误消息:

Instance argument: cannot convert from 'System.Collections.Generic.IEnumerable' to 'System.Linq.IQueryable 实例参数:无法从“ System.Collections.Generic.IEnumerable”转换为“ System.Linq.IQueryable”

How can i get data contains based on selSender id's? 如何获取基于selSender ID的数据?

Looks like property CreatedByUserID has type of Nullable<int> . 看起来属性CreatedByUserID类型为Nullable<int> You need to use it's value for verifying if selSender contains it: 您需要使用它的值来验证selSender是否包含它:

RadGrid1.DataSource = from m in myEntities.Messages                          
                      where m.CreatedByUserID.HasValue &&
                            selSender.Contains(m.CreatedByUserID.Value)
                      select new { 
                          m.Id,
                          m.MessageText,
                          m.CreatedByUserID 
                      };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM