У меня проблемы со следующим запросом linq2sql:
public IEnumerable List(IQueryable<Enquiry> enquiries, Supplier supplier)
{
IEnumerable result = from e in enquiries
let order = supplier==null ? null : e.Orders.Where(f => f.ClientId.Equals(supplier.Id)).FirstOrDefault()
let enquiryUser = e.Client.ClientUsers.First()
select new
{
Id = e.Id,
Name = e.Name,
PublicId = EnquiryMethods.GetPublicId(e.PublicId),
Price = supplier==null ? 0 : EnquiryMethods.GetPrice(e, supplier),
What = e.WorkType.DescriptionText,
Where = e.EnquiryArea.DescriptionText,
Who = e.EnquiryType0.DescriptionText,
When = e.EnquiryTime0.DescriptionText,
PriceRange = e.EnquiryPrice0.DescriptionText,
DisplayPriceRange = e.EnquiryPrice0.Display,
NbrOrders = e.Orders.Count(),
Description = StringUtils.Nl2Br(e.Description??""),
Published = e.EnquiryPublished,
HasPurchased = order!=null,
BuyerFirstName = order!=null ? enquiryUser.FirstName : "",
BuyerLastName = order!=null ? enquiryUser.LastName : "",
BuyerPhone = order!=null ? enquiryUser.Phone : "",
BuyerCellphone = order!=null ? enquiryUser.Cellphone : "",
BuyerEmail = order!=null ? enquiryUser.Email : "",
EnquiryMessage = order!=null ? StringUtils.Nl2Br(order.EnquiryMessage??"") : "",
OrderId = order!=null ? (Guid?)order.Id : null
};
return result;
}
При передаче не-нулевого поставщика это работает файл, но при передаче нулевого для поставщика я получаю «Исключение NullReferecenceException было обработано кодом пользователя».
Моя теория такова, что linq2sql не радует X? Операции Y: Z, так как кажется, что Z ("e.Orders.Where(f => f.ClientId.Equals(supplier.Id)).FirstOrDefault()
") всегда оценивается? Я решил это с помощью supplier==null ? Guid.Empty : supplier.Id
, но я все еще не могу заставить остальную часть запроса работать (порядок! = Null parts перерывы, выяснил это, комментируя все, кроме одного).
Странная вещь заключается в том, что e.Orders.Where (f => f.ClientId.Equals (supplier.Id)). FirstOrDefault () выдает ноль в случае, когда поставщик не равен нулю и запрос работает. Есть ли разница между нулем и нулем?
Как бы вы написали это?