【发布时间】:2017-11-24 09:56:41
【问题描述】:
谁能告诉我以下问题有什么问题,以及如何解决它:
//filterItem.Value is a string array - It is being conerted into an int array
var intFilters = Array.ConvertAll(filterItem.Value, s => int.Parse(s));
//Returns an IQueryable<int> for all items in this context that are also in intFilters
var ids = Context.table1.Where(a => intFilters.Any(y => y == a.domId)).Select(x => x.domId);
//query is an IQueryable
query = query.Where(x => specUnidsNullable.Contains(y => y == x.Id));
上面的目的是只获取来自query的记录,这些记录也包含在ids中
我收到以下错误:
Cannot convert lambda expression to type int because it is not a delegate type
我也试过这个:
var ids = idsNullable.Where(x => x > 0);
这很好用 - 我这样做的原因是为了看看问题是否是 ids 无法转换为 lambda 类型表达式。
关于这个错误有很多问题,但似乎没有一个能解决我看到的特定问题......
【问题讨论】:
-
将
specUnidsNullable.Contains(y => y == x.Id)替换为specUnidsNullable.Contains(x.Id)? -
@Evk 一个简单的错误我应该已经发现了——如果你把它写成答案,我会把它标记为正确