我有一个包含员工数据的数据表,这个数据绑定到网格视图。我有网格视图中的国家,排名,部分的标题下拉。每当选定的下拉索引发生变化时,我会使用LINQ按照Say country下拉列表获取数据,并将其保存在 Viewstate 中以进行进一步的过滤操作。这很好用。
我将过滤器值保存在字典中,比如DictionaryFilters,如果没有设置过滤器,则key的值设置为ALL。
例如我选择,国家和部分。过滤后的数据很好。但如果我将国家/地区设置为全部,则部分过滤器仍然存在。因为我的网格中有4-5个过滤下拉菜单,如何通过仅使用一个LINQ查询并使用Dictionary值而不是多个条件查询来查询数据表中的数据。是否有任何%用于选择列,以便我将字典值中的ALL更改为此特定运算符?
filter["Country"]="UK"; filter["Section"]="HR"; filter["rank"]="All";
var query = from a in datatable
where a.Field<string>("Country")filter["Country"] &&
a.Field<string>("Section")==filter["Section"] &&
a.Field<string>("Rank")==filter["rank"]
select a;
答案 0 :(得分:0)
您是否尝试在过滤之前测试过滤器值是否设置为“全部”?它会是这样的:
$array = [];
这样,当(filter["Country"] == "All") || (a.Field<string>("Country")filter["Country"])
设置为“All”时,filter["Country"]
运算符不会计算第二个语句(称为短路运算符)。
希望它有所帮助!