Je vais avoir des problèmes avec la suite requête linq2sql:Problème avec la requête 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;
}
Lors du passage fournisseur non NULL cela fonctionne fichier, mais en passant le long d'un nul pour le fournisseur je reçois « NullReferecenceException était non gérée par l'utilisateur code". Ma théorie est que linq2sql insn't heureux avec X? Y: Z opérations car il semble que Z ("e.Orders.Where(f => f.ClientId.Equals(supplier.Id)).FirstOrDefault()
") Est toujours évalué? J'ai résolu ceci par supplier==null ? Guid.Empty : supplier.Id
mais je ne peux toujours pas obtenir le reste de la requête pour fonctionner (l'ordre! = Null parst casse, compris ceci en commentant tous mais un). La chose étrange est que e.Orders.Where (f => f.ClientId.Equals (fournisseur.Id)). FirstOrDefault() donne une null dans le cas où le fournisseur est non nul et la requête fonctionne. Y a-t-il une différence entre null et null?
Comment écrivez-vous cela?
Il peut être utile d'examiner les données que vous testez aussi – RobS