Лямбда-синтаксис: элементы, в которых функция имеет определенное значение в диапазоне аргументов - PullRequest
4 голосов
/ 24 февраля 2011

У меня есть пользовательский тип MyType с функцией MyBoolFunction(string), которая возвращает true или false.

У меня большой список MyType объектов MyTypeList.

У меня есть список строковых объектов StringList.

Я хотел бы получить подмножество MyTypeList, где myTypeList.MyBoolFunction(arg) истинно по крайней мере для одного значения arg, поскольку arg находится в диапазоне StringList.

Думаю, я смогу сделать это с помощью лямбда-выражений C #.

Я представляю что-то вроде этого (псевдокод)

MyTypeList.Where(x => (x.MyBoolFunction(arg)==true for some arg in StringList);

Возможно ли это? Как я могу это сделать?

Ответы [ 3 ]

8 голосов
/ 24 февраля 2011

Попробуйте использовать Enumerable.Any:

var query = MyTypeList.Where(x => StringList.Any(arg => x.MyBoolFunction(arg)));
3 голосов
/ 24 февраля 2011
MyTypeList.Where(x => StringList.Any(s => x.MyBoolFunction(s)));

Для ясности, s - это запись в StringList, а x - это запись в MyTypeList

.
1 голос
/ 24 февраля 2011

Не зная ваших настоящих типов, я бы сказал:

MyTypeList.Where(x => StringList.Any(arg => x.MyBoolFunction(arg));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...