GroupBy LINQ查询

时间:2017-06-09 04:59:28

标签: c# linq

我有以下类的结构:

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;}
}

现在我正在尝试检索其Question.Price不等于null的OfferOrder。

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

我试图通过GroupBy做到但没有找到运气。我尝试这样的事情,但仍然无法在Question

分组后如何获得价格
OrderOrderData OrderData = order;
OfferOrder pricedOfferOrder = OrderData.OfferOrder.GroupBy(x=>x.Question)...

2 个答案:

答案 0 :(得分:1)

简单Where方法就足够了:

OrderOrderData OrderData = order;

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

答案 1 :(得分:0)

在这种情况下,无需使用GroupBy。你可以尝试这样的事情:

var offerOrder = OrderData.OfferOrder
  .FirstOrDefault(oo => oo.Question.FirstOrDefault(q=>q.Price != null) != null );

基本上我们使用FirstOrDefault方法,该方法接受谓词,并且假设至少有一个项目满足此谓词,这是查询的结果。否则返回默认值,在这种情况下为null。所以我们正在寻找第一个OfferOrder,如果有的话,其Question数组包含至少一个Question(非空),其Price不为空。

有关此方法的详细信息,请查看here