任意の数のカテゴリに含めることができるオファーがあります。ただし、そのオファーが 2 回以上表示されることは望ましくありません。
そのオファーがその select ステートメントに既に存在するかどうかを確認する where 句を持つことが可能かどうか、もしそうなら明らかにそれを無視することができるかどうか疑問に思っていました。
linq クエリは次のとおりです。
Offers = from o in offerCategories
orderby o.RewardCategory.Ordering, o.Order
where o.RewardOffer.IsDeleted == false
select new OfferOverviewViewModel
{
Partner = o.RewardOffer.Partner,
Description = String.Format("{0} {1}", o.RewardOffer.MainTitle, o.RewardOffer.SecondaryTitle),
OfferId = o.OfferId,
FeaturedOffer = o.RewardOffer.FeaturedOfferOrder.HasValue,
Categories = from c in offerCategories.Where(oc => oc.OfferId == o.OfferId)
orderby c.RewardCategory.Ordering
select new CategoryDetailViewModel
{
Description = c.RewardCategory.DisplayName
}
},