Кто-то разместил подобный вопрос здесь Как динамическая библиотека (System.Linq.Dynamic) поддерживает LIKE Operator?
Но это не совсем то, что я хочу. Оператор Contains , упомянутый в этом посте, делает это только в SQL "% SOMETHING%" . Но оператор LIKE в SQL может сделать это "SOME% THING" . Есть ли аналогичный оператор для Dynamic LINQ? Если нет, есть ли решение для этого? Может быть с Regex? Также есть подстановочный знак одного символа? Например. «SOM $ THING» возвращает «SOMETHING» или «SOM3THING»
Редактировать: я разрабатываю приложение WPF, которое должно читать файлы журнала в формате XML. Каждый элемент содержит 34 поля. Поэтому вместо того, чтобы писать очень длинный WHERE, я использовал System.Reflection.PropertyInfo для итерации каждого поля, чтобы написать запрос, а затем использовать System.Linq.Dynamic для его выполнения.
Edit2: я отредактировал код, чтобы он был более читабельным для зрителей.
Вот код:
Пример 1:
prop.Name = "FirstName", paramterString = "Ke% in", возвращает "Кевин",
«Кельвин» ...
Пример 2:
prop.Name = "FirstName", paramterString = "Ke $ in", возвращает "Кевин",
"Келин" ...
var query = "";
StringBuilder sb = new StringBuilder();
foreach (var prop in stringProps)
{
sb.Append($"({prop.Name} != null And {prop.Name}.Contains({parameterString})");
}
query = sb.ToString().Substring(0, sb.Length - 4);
filteredData = filteredData.Where(query);
Одним из требований является реализация оператора SQL LIKE, чтобы пользователи могли использовать что-то подобное, чтобы получить желаемый результат: FirstName LIKE 'SOME% THING'