EF OrderBy Один ко Многим - PullRequest
       11

EF OrderBy Один ко Многим

2 голосов
/ 17 мая 2011

Хорошо, у меня есть объект Person с коллекцией адресов.Человек может иметь ноль или несколько адресов, и эти адреса имеют ранг (int).Я хочу иметь возможность сортировать результаты запроса по городу или штату с самым низким рейтингом адреса в коллекции адресов.Однако тот факт, что для некоторых людей коллекция может быть пустой, сводит меня с ума, и я не могу ее изменить.

Примерно так, но без исключения, когда коллекция адресов пуста

ctx.People
     .OrderBy(p => p.Addresses
                       .OrderBy(a => a.Rank)
                       .First().City);

1 Ответ

1 голос
/ 17 мая 2011

Разве вы не хотите включать только людей, у которых есть адреса?в противном случае, как можно сделать заказ?

что-то вроде этого непроверенного кода:

ctx.People
 .Where(p=>p.Addresses.Any())
 .OrderBy(p => p.Addresses
                   .OrderBy(a => a.Rank)
                   .First().City);

РЕДАКТИРОВАТЬ

Я выйду из своегоЯ уверен, что здесь глубина linq (я не использовал union до того, как угадал из документов), но если вы хотите, чтобы люди без адреса также указывали, не нужно что-то вроде этого:

ctx.People
 .Where(p=>p.Addresses.Any())
 .OrderBy(p => p.Addresses
                   .OrderBy(a => a.Rank)
                   .First().City)
 .Union(
    ctx.People
    .Where(p=>p.Addresses.Any()==false));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...