Строка фильтра LINQ со строкой значения - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть string str = "abc,def,ghi". Длина строки будет варьироваться. Там может быть одно или несколько значений, разделенных запятой.

У меня есть объект, который имеет код свойства, который является строкой и может содержать значения, такие как - "abc, stu, xyz"

Я пытаюсь фильтровать объекты из коллекции, которая будет возвращать только те, которые содержат строку в str

Итак, если object.Code = "abc, stu, xyz" и string str = "abc,def,ghi", то возвращать объект.

objects.Where( x => x.Code.Split(',').Any(s => (???)) );

где? ?? где моя строка str значения будут входить.

Спасибо,

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Преобразование str в HashSet улучшит скорость тестирования и упростит запрос, но, возможно, это излишне, если в вашем objects всего несколько записей. Я предполагаю, что свойство Code не имеет пробелов после каждой запятой.

var strHash = str.Split(',').ToHashSet();
var ans = objects.Where(o => o.Code.Split(',', StringSplitOptions.RemoveEmptyEntries).Any(c1 => strHash.Contains(c1)));
1 голос
/ 05 февраля 2020
var result = objects.Where(x => x.Code.Split(',').Any(s => (str.Split(',').Any(f => f.Equals(s)))));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...