Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GroupBy-LINQ查询_C#_Linq - Fatal编程技术网

C# GroupBy-LINQ查询

C# GroupBy-LINQ查询,c#,linq,C#,Linq,我的课程结构如下: public partial class OrderOrderData { public OrderOrderDataOfferOrder[] OfferOrder{get;set} } public partial class OrderOrderDataOfferOrder { public OrderOrderDataOfferOrderQuestion[] Question{get;set} } public partial class Order

我的课程结构如下:

public partial class OrderOrderData
{
    public OrderOrderDataOfferOrder[] OfferOrder{get;set}
}

public partial class OrderOrderDataOfferOrder
{
    public OrderOrderDataOfferOrderQuestion[] Question{get;set}
}

public partial class OrderOrderDataOfferOrderQuestion
{
    public OrderOrderDataOfferOrderQuestionPrice Price{get;set;}
}
现在,我试图检索其问题。Price不等于null的报价人

例如,我在Offerder中有对象A、B和C。问题。C的价格不等于null,因此我的LINQ查询应该将offerder
C
返回到
pricedofferder

我试着用GroupBy做这件事,但没有找到运气。我正在尝试类似的方法,但仍然不知道在按
问题分组后如何获得价格

OrderOrderData OrderData = order;
OfferOrder pricedOfferOrder = OrderData.OfferOrder.GroupBy(x=>x.Question)...

简单的方法在这里是足够的:

OrderOrderData OrderData = order;

OfferOrder pricedOfferOrder = OrderData.OfferOrder
  .Where(d => d.Question.Any(e => e.Price != null));

在这种情况下,不需要使用
GroupBy
。您可以尝试以下方法:

var offerOrder = OrderData.OfferOrder
  .FirstOrDefault(oo => oo.Question.FirstOrDefault(q=>q.Price != null) != null );
本质上,我们使用
FirstOrDefault
方法,该方法接受一个谓词,只要至少有一个项满足该谓词,这就是查询的结果。否则返回默认值,在本例中为
null
。因此,我们正在寻找第一个报价人(如果有),其
问题
数组至少包含一个
问题
(非空),其
价格
不为空


有关此方法的更多信息,请查看。

@JenishRabadiya更正!当
Price
对于所有
Question
为空时,ThanksI get
对象引用未设置为对象的实例。我怎么能避免呢?这不可能发生!您是在查询IQuerable还是它只是linq to object?我的错,我实际上是在这样做
offerder pricedofferder=OrderData.offerder.Where(d=>d.Question.Any(e=>e.Price!=null)).FirstOrDefault().Question)
Ok,这就是为什么如果Price对所有人都为null,那么
offerder pricedofferder=OrderData.offerder.Where(d=>d.Question.Any(e=>e.Price!=null)).FirstOrDefault()将返回null,访问null上的属性问题将导致null引用异常。任何速记方法,LINQ方法可以避免这种情况吗?