苦苦思索如何让这个过滤器工作:
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 to Entities仅支持转换EDM原语或枚举类型
答案 0 :(得分:3)
您正在尝试将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();