查询语法'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原语类型或枚举类型

查询语法'where子句对int列表进行过滤

您正在尝试将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();