Есть ли способ сделать это с помощью LINQ Query? - PullRequest
0 голосов
/ 06 ноября 2010

<< Запутано >>

В моем репозитории я объявляю IQueryable<Foo> foos и ConfigEntities db = new ConfigEntities() Затем я запрашиваю БД с помощью запроса linq

foos = from f in _db.Foos
       select f;

Каждый Foo имеет отдельную коллекцию EntityCollection<Bar> bars, которая автоматически заполняется Entity Framework.

Я хочу перебрать коллекцию foos и по коллекциям баров в каждом Foo и изменить коллекцию баров на основе даты, что-то вроде:

from foo in foos
    (from bar in foo.bars
         where bar.Date < someDate && bar.Date >= someOtherDate
         select bar)
     select foo

Таким образом, я получаю обратно всех фусов с подмножеством исходных баров. Я не уверен, как, но я думаю, что хочу сделать выбор внутри выбора или что-то в этом роде.

Любая помощь будет оценена.

1 Ответ

3 голосов
/ 06 ноября 2010
from foo in foos
from bar in foo.bars
where bar.Date == DateTime.Now
select new { foo, bar }

или (отредактировано, учитывая, что у вас нет соответствующего конструктора для Foo)

from foo in foos
select new
{
  Foo = foo, 
  Bars = from bar in foo.bars
         where bar.Date == DateTime.Now
         select bar
}

Это даст коллекцию «кортежей», где каждый будет содержать оригинал Foo (со всеми Bar s), а также коллекция Bar s, которые вы хотите.

...