我有以下类的结构:
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)...
答案 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。