Невозможно преобразовать лямбда-выражение в намеченный тип делегата (список целых содержит int) - PullRequest
0 голосов
/ 30 августа 2018

У меня есть метод, который получает массив строк. Затем я превращаю его в список целых. Наконец, я создаю IQueryable, где хочу вернуть результаты, которые соответствуют идентификаторам в связанной таблице.

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

заявив, что «Невозможно преобразовать лямбда-выражение в предполагаемый тип делегата, поскольку некоторые из возвращаемых типов в блоке неявно не преобразуются в возвращаемый тип делегата»

eqp_equipment_location_role_id - это int, и я проверяю, содержит ли список целых число это число. Я не понимаю, в чем проблема.

Заранее спасибо.

1 Ответ

0 голосов
/ 30 августа 2018

Contains принимает значение, а не лямбду. Следовательно, 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)));

ближе к тому, что предполагалось?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...