我正在尝试首先使用过滤器列表,然后使用,OrderBy但是在Where子句中出现以下错误
运算符“ &&”不能应用于类型为“ bool”和“ System.Collections.Generic.IEnumerable”的操作数
我的查询出了什么问题?
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);
Run Code Online (Sandbox Code Playgroud)
x.FeatureList.Where(...)产生符合条件的IEnumerable<T>或IQueryable<T>项FeatureList。由于您正在寻找条件来查看是否存在任何此类项目,因此请x.FeatureList.Any(...)改用:
Offer internetOffer = offerList
.Where(x =>
(x.VerticalType == VerticalType.HighSpeedInternet)
&& (x.FeatureList.Any(y => y.FeatureName ==
Const.CommonConstants.DOWNLOAD_SPEED_FEATURE_NAME))
).OrderByDescending(y => y.Value);
Run Code Online (Sandbox Code Playgroud)
你能告诉我怎样才能从这个名单,其获得该项目
FeatureName是Const.CommonConstants.DOWNLOAD_SPEED_FEATURE_NAME和拥有财产的最大值Value?
添加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();
Run Code Online (Sandbox Code Playgroud)
OrDefault当提供的功能都不具有名为的功能时,该部件将保护您的代码免于崩溃DOWNLOAD_SPEED_FEATURE_NAME。