![](/img/trans.png)
[英]Find key using lambda expression in HttpContext.Current.Items cache
[英]FIND items in list using lambda expression
我有以下课程:
public class AuthenticateCustomerResponse
{
public EligiblePromotions EligiblePromotions { get; set; }
}
public class EligiblePromotions
{
public List<PromotionList> PromotionList { get; set; }
}
public class PromotionList
{
public string LineOfBusiness { get; set; }
public AuthenticatePromotions Promotions { get; set; }
}
public class AuthenticatePromotions
{
public List<AuthenticatePromotion> Promotion { get; set; }
}
public class AuthenticatePromotion
{
public string ServiceType { get; set; }
}
我想检索其LineOfBusiness
等于“ VID”且ServiceType
等于“ SAT”的PromotionList
。 我尝试了以下lambda表达式:
PromotionList getPromotion = AuthenticateCustomerResponse.EligiblePromotions.PromotionList.Find(p => p.LineOfBusiness.ToUpper().Equals("VID")).Promotions.Promotion.Find(o=>o.ServiceType.Equals("SAT"));
但我收到错误消息:
无法将类型'AuthenticatePromotion'隐式转换为'PromotionList'
我究竟做错了什么?
下面的代码将使您获得LineOfBusiness
等于'VID'的第一个对象。
var promotionList = AuthenticateCustomerResponse.EligiblePromotions.PromotionList
.Where(p => p.LineOfBusiness.ToUpper().Equals("VID")).FirstOrDefault();
如果希望所有具有VID作为LineOfBusiness
对象而不是.ToList()
则可以使用.FirstOrDefault()
编辑:如果要检查SAT,则可以在.Where()
添加另一个子句.Where()
这部分代码
.Promotion.Find(o=>o.ServiceType.Equals("SAT"));
返回AuthenticatePromotion
,但是您正在明确要求一个PromotionList
对象。
消除错误的一种方法是使用隐式变量关键字var
:
var getPromotion = AuthenticateCustomerResponse.EligiblePromotions.PromotionList.Find(p => p.LineOfBusiness.ToUpper().Equals("VID")).Promotions.Promotion.Find(o=>o.ServiceType.Equals("SAT"));
但这当然仍然会返回AuthenticatePromotion
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.