我有以下查询:
PromotionList dataPromotion = authenticateCustomerResponseRootObject.Response
.AuthenticateCustomerResponse.EligiblePromotions.PromotionList
.Where(p => p.LineOfBusiness.ToUpper().Equals("DATA"))
.FirstOrDefault();
我的PromotionList
包含3个对象,LineOfBusiness
Data
,Video
,第三个对象也包含Data
。上面的查询只返回第一个对象的PromotionList
,而我想要LineOfBusiness等于Data的ALL。为什么会这样?
答案 0 :(得分:2)
您正在使用FirstOrDefault
,因此您只返回第一个。
PromotionList dataPromotion = authenticateCustomerResponseRootObject.Response.AuthenticateCustomerResponse.EligiblePromotions.PromotionList.Where(p => p.LineOfBusiness.ToUpper().Equals("Data")).FirstOrDefault();
如果您希望所有这些广告在最后删除该电话,并替换为满足您需求的ToList
,ToArray
或类似电话:
var data = authenticateCustomerResponseRootObject.Response.AuthenticateCustomerResponse.EligiblePromotions.PromotionList.Where(p => p.LineOfBusiness.ToUpper().Equals("Data")).ToList();
同样如评论中所述,您的Where
调用使用ToUpper
,然后对包含小写字符的字符串进行比较,因此永远不会返回任何结果。您需要删除ToUpper
,使用大写字符串或甚至使用忽略大小写:
Where(p => p.LineOfBusiness.Equals("Data", StringComparison.OrdinalIgnoreCase))