You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用多Where从句筛选CarBrands枚举指定值返回空结果,求解决方案

问题原因分析

你写的代码里连续调用了两次Where,第一次筛选出等于CarBrands.Bmw的项,第二次又要求这些项等于CarBrands.Audi——一个枚举值不可能同时是Bmw和Audi,所以最终结果必然是空集合。

正确实现方式

下面是几种可行的写法:

方式1:单个Where中用逻辑或(||)判断

var carBrands = Enum.GetValues(typeof(CarBrands)).Cast<CarBrands>();
var filteredBrands = carBrands.Where(x => x == CarBrands.Bmw || x == CarBrands.Audi).ToList();

方式2:用Contains匹配目标集合

先定义要筛选的目标枚举值集合,再通过Contains判断:

var targetBrands = new List<CarBrands> { CarBrands.Bmw, CarBrands.Audi };
var carBrands = Enum.GetValues(typeof(CarBrands)).Cast<CarBrands>();
var filteredBrands = carBrands.Where(x => targetBrands.Contains(x)).ToList();

方式3:LINQ查询语法写法

var carBrands = Enum.GetValues(typeof(CarBrands)).Cast<CarBrands>();
var filteredBrands = (from brand in carBrands
                      where brand == CarBrands.Bmw || brand == CarBrands.Audi
                      select brand).ToList();

另外提下你代码里的小错误:test2的查询中,from t in carBrands里的carBrands变量未定义,应该用你之前声明的test变量;而且select test2是错误的,应该改为select t。

内容的提问来源于stack exchange,提问作者user1765862

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:22:36