【发布时间】:2015-02-12 05:54:59
【问题描述】:
我想在 linq 的 cluase 中使用 sql,因为我尝试过 contains,但它显示错误。我的代码是..
var allId = new int[] { 31, 32, 33 };
var libraryList = from c in db.COURSELIBRARies
join cc in db.COURSECATEGORYTAGGINGs on c.LIBITEMID equals cc.COURSEID
where allId.Contains(cc.CATEGORYID) // here error is showing.
select new Library { Id = c.LIBITEMID, Name = c.GROUPNAME, Desc = c.DESCRIPTION, logo = c.LOGO, CategoryId = cc.CATEGORYID };
错误是:
'int[]' 不包含 'Contains' 的定义,并且最佳扩展方法重载
'System.Linq.Queryable.Contains<TSource>(System.Linq.IQueryable<TSource>, TSource)'有一些无效参数实例参数:无法从
'int[]'转换为'System.Linq.IQueryable<int?>'
【问题讨论】:
-
尝试将数组
allId改为List -
该特定错误是由于两件事之一。要么你在撒谎,实际上并没有使用
Entity Framework,而是使用Linq to SQL,或者你正在使用Entity Framework 2,它不支持IEnumerable.Contains。 -
您的前 3 行代码不起作用。将
{31,32,33}与.Split(',')拆分并将元素解析为int失败,因为"{31" != int -
@JensKloster 我写错了,实际上它的值是动态的,即 31,32,33,所以它可以工作。
标签: c# linq entity-framework compiler-errors linq-to-entities