Функция LINQ Select () выбрасывает загруженные значения (loadoptions) - PullRequest
0 голосов
/ 14 июня 2009

У меня есть модель, в которой у продукта может быть несколько PriceDrops. Я пытаюсь составить список продуктов с самыми последними снижениями цен.

Получить последние падения цен с загруженными продуктами достаточно просто, и я подумал, что это будет лучший способ начать:

dlo.LoadWith<PriceDrop>(pd => pd.Product);
db.LoadOptions = dlo;
return db.PriceDrops.OrderBy(d=>d.CreatedTime);

Отлично работает для списка недавних падений цен, но я хочу список продуктов. Если я добавлю «.Select (d => d.Product)», я получу список товаров обратно - что идеально, - но они больше не связаны с PriceDrops. То есть, если я вызываю .HasLoadedOrAssignedValues ​​для продуктов, он возвращает false. Если я пытаюсь опросить ценовые снижения, он пытается вернуться к ним в БД.

Есть ли способ обойти это, или мне нужно создать запрос, начинающийся с Products, а не использовать модификатор Select? Я пытался избежать этого, потому что в некоторых случаях мне нужен список PriceDrops, и я хотел использовать как можно больше логики (для ясности я исключил предложение where и другой код фильтра из примера выше).

Спасибо, Том

Ответы [ 2 ]

1 голос
/ 14 июня 2009

Попробуйте загрузить продукты, упорядоченные по последней цене PriceDrop:

dlo.LoadWith<Product>(p => p.PriceDrops);
db.LoadOptions = dlo;
return db.Products.OrderBy(d => d.PriceDrops.Max(pd => pd.CreatedTime));

Из вашего вопроса я понимаю, что вы пытаетесь избежать этого, почему?

0 голосов
/ 14 июня 2009

Я думаю, что вам нужен метод AssociateWith , также в классе DataLoadOptions.

dlo.AssociateWith<Product>(p => p.PriceDrops.OrderBy(d=>d.CreatedTime))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...