Используйте 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
.
Принятие Вас означает основанный на операция со строками запрос: динамическая библиотека LINQ будет хорошо работать; просто звоните .AsQueryable()
сначала:
string s = *dynamic query*
var qry = l.AsQueryable().Where(s);
Это дает Вам IQueryable<T>
обертка вокруг Вашего списка, который обеспечивает доступ к динамическим дополнительным методам LINQ.
Можно использовать 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#.