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

→ Ссылка