Как проверить, является ли условие действительным для любых элементов в группе, созданной с помощью Linq to sql?Проверьте, соответствует ли условие для любого элемента в группе
Допустим, у нас есть 3 стола: Invoice
, Order
и OrderItem
.
Я хочу знать Всего всех заказов на счет-фактуру, и если у каких-либо предметов заказа из заказов на счет-фактуру есть скидки.
from o in db.Orders
group o by new
{
InvoiceId = o.InvoiceId,
LocationId = o.LocationId,
} into g
select new
{
InvoiceId = g.Key.InvoiceId,
LocationId = g.Key.LocationId,
Total = g.Sum(x => x.Total).
HasDiscount = <???>
}
Я попытался с let discountedItems = o.OrderItems.Where(i.Discount != 0)
, но я не знаю, как ссылаться на правильные OrderItems.
Edit:
Заказать Свойства: Id
, InvoiceId
, LocationId
, Total
OrderItem Свойства: Id
, OrderId
, Discount
- Допустим, скидка целое значение
ответы, которые предлагают HasDiscount = g.Any(x => x.OrderItem.Select(oi => oi.Discount != 0).FirstOrDefault())
выглядеть, что может быть это, но я беспокоюсь о производительности, так как у меня есть 300 тысяч элементов в таблице Orders и более миллиона в OrderItem. Разве это не делает запрос для каждой группы и материализует их элементы заказа?
Прошу прощения за плохое описание таблиц, пожалуйста, поймите, что это всего лишь примеры, и мой реальный случай сложнее.
Я думаю, что вы ищете 'Any':' HasDiscount = g.Any (x => x.Discount! = 0)) ' –
В следующий раз, пожалуйста, разместите более подробную информацию о своих объектах –
Я отредактировал этот вопрос более подробно –