运算符“ &&”不能应用于类型为“ bool”和“ System.Collections.Generic.IEnumerable <Feature>”的操作数

Hum*_*Ali 0 c# linq

我正在尝试首先使用过滤器列表,然后使用,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)

das*_*ght 5

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)

你能告诉我怎样才能从这个名单,其获得该项目FeatureNameConst.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