Динамический LINQ на IEnumerable?

Используйте filter, чтобы получить элементы, которые имеют abc.

>>> lst = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
>>> print filter(lambda x: 'abc' in x, lst)
['abc-123', 'abc-456']

Вы также можете использовать понимание списка.

>>> [x for x in lst if 'abc' in x]

Кстати, не используйте слово list как имя переменной, так как оно уже используется для типа list.

15
задан Marc Gravell 28 January 2009 в 08:23
поделиться

2 ответа

Принятие Вас означает основанный на операция со строками запрос: динамическая библиотека LINQ будет хорошо работать; просто звоните .AsQueryable() сначала:

string s = *dynamic query*
var qry = l.AsQueryable().Where(s);

Это дает Вам IQueryable<T> обертка вокруг Вашего списка, который обеспечивает доступ к динамическим дополнительным методам LINQ.

15
ответ дан 1 December 2019 в 04:01
поделиться

Можно использовать FindAll () метод, который берет предикат. Вот основной пример.

List<string> stringList = new List<string>(new string[]{"Smith", "Johnson", "Jordan","Doe"});

List<string> filteredStringList = stringList.FindAll(x => x == "Smith");

Также метод Находки возвращает единственный объект.

существует также проект в качестве примера на MSDN для выполнения динамических запросов LINQ и на IEnumerable и на IQueryable. Можно снова использовать класс DynamicQueryable от него. Вот ссылка . Проект в демонстрационном проекте C#.

3
ответ дан 1 December 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: