는 : 공급 업체 널 함께 전달할 때문제는 내가 다음 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;
}
하면 파일을 작동-null이 아닌 공급 업체를 전달하지만, 언제 NullReferecenceException는 사용자가 처리되지 않은했다 "GET 암호".
내 이론은 linq2sql이 X에 만족하지 않는다는 것입니다. Y : Z 작업 (Z : "e.Orders.Where(f => f.ClientId.Equals(supplier.Id)).FirstOrDefault()
")은 항상 평가됩니까? 나는이 문제를 supplier==null ? Guid.Empty : supplier.Id
을 통해 풀었지만, 나머지 쿼리는 여전히 작동하지 않는다. (순서는! = null parst breaks이며, 이것을 제외한 모든 것을 주석으로 처리한다.)
이상한 점은 e.Orders.Where (f => f.ClientId.Equals (supplier.Id))입니다. FirstOrDefault()는 공급자가 null이 아니고 쿼리가 작동하는 경우 null을 제공합니다. null과 null 사이에 차이가 있습니까?
어떻게 작성 하시겠습니까?
let order = supplier==null
? null
: e.Orders.Where(f => f.ClientId.Equals(supplier.Id))
.FirstOrDefault()
let order = e.Orders.Where(f => supplier != null
&& f.ClientId.Equals(supplier.Id))
.FirstOrDefault()
에 두 번째 부분이 평가 될 때 작동 말부터이 작동 여부 만 변경하려고합니다 경우
테스트 할 데이터를 검사하는 것이 도움이 될 수도 있습니다. – RobS