Я пытаюсь подсчитать, сколько строк заказов (ol) имеют настраиваемое поле «distributedOrderLineId», равное идентификатору строки заказов текущей итерации.
Дело в том, что не в каждой строке заказа определено это настраиваемое поле. Как я могу заставить LINQ пропускать строки заказов с неопределенным настраиваемым полем вместо того, чтобы выдавать ошибку.
Пожалуйста, обратитесь к приведенному ниже коду.
var distributionsLeft = ol.Quantity - 1 - PurchaseOrder.All().Where(y => int.Parse(y["distributedOrderLineId"]) == ol.Id).Count();
С уважением, Бринк10
ИЗМЕНИТЬ
Я попробовал следующий фрагмент кода, используя any:
PurchaseOrder.All().Where(y => y.OrderProperties.Any(z=>z.Key=="distributedOrderLineId")).Where(a=>a["distributedOrderLineId"]==ol.OrderLineId.ToString()).Count();
К сожалению, это не работает. Ошибка, которую я получаю в трассировке стека:
[NotSupportedException: System.String get_Item(System.String)]
NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor.VisitMethodCallExpression(MethodCallExpression expression) +206
ИЗМЕНИТЬ КОНЕЦ
PurchaseOrder.All().Where(y => y.OrderProperties.Any(z => z.Key == "distributedOrderLineId")).ToList().Where(a => a["distributedOrderLineId"] == ol.OrderLineId.ToString()).Count()
01.01.2013