查询语法'where子句对int列表进行过滤
本文关键字:列表 int 过滤 子句 语法 where 查询 | 更新日期: 2023-09-27 18:18:56
如何让这个过滤器工作:
var categoryIDs = new List<int>();
categoryIDs.Add(2);
categoryIDs.Add(3);
var dbContacts = (from cnt in _db.Contacts
join ucc in _db.UserContactCategories on cnt.id equals ucc.ContactID
join cat in _db.Categories on ucc.CatDescID equals cat.id
where categoryIDs.Equals(cnt.id)
select new {cnt.id,
cnt.GivenName,
cnt.SurName
}).ToList();
得到这个错误信息:
无法强制转换类型"System"。Int32'类型'System.Object'。LINQ到实体只支持转换EDM原语类型或枚举类型
您正在尝试将List<int>
与int
进行比较,这将不起作用。
如果你想获得所有的接触是在你的硬编码List<int>
,只需使用Contains
方法。
var categoryIDs = new List<int>();
categoryIDs.Add(2);
categoryIDs.Add(3);
var dbContacts = (from cnt in _db.Contacts
join ucc in _db.UserContactCategories on cnt.id equals ucc.ContactID
join cat in _db.Categories on ucc.CatDescID equals cat.id
where categoryIDs.Contains(cat.id)
select new {cnt.id,
cnt.GivenName,
cnt.SurName
}).ToList();