Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 运算符“&&”不能应用于“bool”和“System.Collections.Generic.IEnumerable”类型的操作数_C#_Linq - Fatal编程技术网

C# 运算符“&&”不能应用于“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)

我尝试先筛选列表,然后使用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);

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();