StartsWith не работает внутри Any
Есть выражение (не рабочее)
List<string> masks = new List<string> {"11", "22", "33"}
query = query.Where(x => masks.Any(s => x.Number.StartsWith(s)));
query - это IQueryable коллекция объектов типа SomeObject, каждый объект которой имеет поле Number типа string
Смысл запроса в том, чтобы отобрать те SomeObject объекты, у которых Number начинается на какую-либо маску из списка masks.
Запрос в текущем виде не работает.
Как его можно переписать?
Пробовал вместо StartsWith писать так:
query = query.Where(x => masks.Any(number => EF.Functions.Like(x.Number, $"{number}%")));
Тоже не работает.
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Решение простое оказалось - В EF.Functions.Like надо передавать уже готовую маску, т.е.
EF.Functions.Like(x.Number, number"); // в number уже содержится "%какое-то_значение"
Проблема возникла при использовании Npgsql EntityFramework PostgreSql 6.0.8, EntityFrameworkCore 6.0.25, NET 6, C# 10, VS 2022