Имейте в виду, чтобы определить , если у Клиента есть адреса, на сервере должна быть выполнена агрегированная операция (COUNT). Я не думаю, что вы можете использовать это свойство HasAddress
непосредственно в предикате LINQ, поскольку агрегатные операции AFAIK нельзя использовать в предикатах LINQ-Entities.
Так что, возможно, вам придется сделать что-то вроде этого:
var result = ctx.Customers.Select(x => new
{
Customer = x,
HasAddress = x.Addresses.Count() > 0
}).ToList();
Это вернет коллекцию из анонимных типов , включая всех клиентов и наличие у них хотя бы одного адреса.
Обратите внимание на ()
на счетчике - он выполняет фактическую операцию агрегирования, тогда как .Count
является операцией LINQ на стороне клиента.
НТН.
EDIT
Если вы хотите поместить этот анонимный тип обратно в объект Customer, вы можете сделать это после запроса (как, например, проверка выполнения .Count()
в базе данных):
var result = ctx.Customers.Select(x => new
{
Customer = x,
HasAddress = x.Addresses.Count() > 0
}).ToList()
.Select(x => new Customer
{
// left to right copy....
HasAddress = true
}).ToList();
Это довольно грязное ИМО, но оно будет работать.