无法将Lambda表达式转换为预期的委托类型(int列表包含int)

时间:2018-08-30 13:40:22

标签: c# linq lambda

我有一个接收字符串数组的方法。然后,我将其转换为整数列表。最后,我要创建一个IQueryable,在其中我要返回与关联表中的ID匹配的结果。

public myMethod(string[] locationRoleids){
IQueryable<equipment> result = DbContext.equipment.Where(e => !e.deleted);
List<int> locationRoleIdList = locationRoleIds.Select(id => int.Parse(id)).ToList();
result = result.Where(e => locationRoleIdList.Contains(e.eqp_ast_equipment_to_location.Any(el => el.eqp_equipment_location_role_id)));

我在

上遇到错误
el.eqp_equipment_location_role_id

声明“无法将lambda表达式转换为预期的委托类型,因为该块中的某些返回类型不能隐式转换为委托的返回类型”

eqp_equipment_location_role_id是一个整数,我正在检查一个整数列表是否包含该数字。我不明白问题是什么。

先谢谢了。

1 个答案:

答案 0 :(得分:1)

Contains取值而不是lambda。因此,e.eqp_ast_equipment_to_location.Any(el => el.eqp_equipment_location_role_id)不是int类型的有效项目。

请参见https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.contains?view=netframework-4.7.2#System_Collections_Generic_List_1_Contains__0_

也许:

result = result.Where(e => e.eqp_ast_equipment_to_location.Any(el => locationRoleIdList.Contains(el.eqp_equipment_location_role_id)));

离预期的目标更近吗?