C# 运算符“&&”不能应用于“bool”和“System.Collections.Generic.IEnumerable”类型的操作数
我尝试先筛选列表,然后使用OrderBy,但在Where子句中出现以下错误 运算符“&&”不能应用于“bool”和类型的操作数 'System.Collections.Generic.IEnumerable' 我的问题出了什么问题C# 运算符“&&”不能应用于“bool”和“System.Collections.Generic.IEnumerable”类型的操作数,c#,linq,C#,Linq,我尝试先筛选列表,然后使用OrderBy,但在Where子句中出现以下错误 运算符“&&”不能应用于“bool”和类型的操作数 'System.Collections.Generic.IEnumerable' 我的问题出了什么问题 Offer internetOffer = offerList .Where(x => (x.VerticalType == VerticalType.HighSpeedInternet)
Offer internetOffer = offerList
.Where(x => (x.VerticalType == VerticalType.HighSpeedInternet)
&& (x.FeatureList
.Where(y => y.FeatureName == Const.CommonConstants.DOWNLOAD_SPEED_FEATURE_NAME)))
.OrderByDescending(y => y.Value);
Where返回一个IEnumerable而不是布尔值,只需将Where替换为Any即可
... x.FeatureList.Any(y => y.FeatureName == Const.CommonConstant.DOWNLOAD_SPEED_FEATURE_NAME)))....
问题是
x.FeatureList.Where(y => y.FeatureName == Const.CommonConstants.DOWNLOAD_SPEED_FEATURE_NAME)
返回IEnumerable而不是布尔值
假设您要检查是否存在任何问题,则必须用替换它
x.FeatureList.Any(y => y.FeatureName == Const.CommonConstants.DOWNLOAD_SPEED_FEATURE_NAME)
x、 功能列表。在哪里。。。生成FeatureList中与条件匹配的项的IEnumerable或IQueryable。由于您正在查找条件以查看是否存在任何此类项,请使用x.FeatureList.any。。。相反:
您能告诉我如何从该列表中获取特性名为Const.CommonConstants.DOWNLOAD\u SPEED\u FEATURE\u NAME并具有属性值的最大值的项目吗 将FirstOrDefault添加到上述调用:
Offer bestInternetOffer = offerList
.Where(x =>
(x.VerticalType == VerticalType.HighSpeedInternet)
&& (x.FeatureList.Any(y => y.FeatureName ==
Const.CommonConstants.DOWNLOAD_SPEED_FEATURE_NAME))
)
.OrderByDescending(y => y.Value)
.FirstOrDefault();
OrDefault部分将保护您的代码在没有一个产品具有名为DOWNLOAD\u SPEED\u feature\u NAME的功能时不会崩溃。&&x.FeatureList.Where=>y.FeatureName==Const.CommonConstants.DOWNLOAD\u SPEED\u feature\u NAME您指的是什么?这里的答案是:好的,但是我想按该值降序订购Const.CommonConstants.DOWNLOAD_SPEED_FEATURE_NAME FEATURE。这个问题不能让我明白。对吗?@HumaAli对,OrderBy和OrderByDescending适用于整个列表,而不是任何子列表。您可以选择带或不带附加条件的有序功能,但x.FeatureList集合将保持其自然顺序。请告诉我如何从该列表中获取FeatureName为Const.CommonConstants.DOWNLOAD_SPEED_FEATURE_NAME且具有最大属性值的项?
Offer bestInternetOffer = offerList
.Where(x =>
(x.VerticalType == VerticalType.HighSpeedInternet)
&& (x.FeatureList.Any(y => y.FeatureName ==
Const.CommonConstants.DOWNLOAD_SPEED_FEATURE_NAME))
)
.OrderByDescending(y => y.Value)
.FirstOrDefault();