如何使用LINQ从Datatable获取过滤数据集

时间:2018-06-04 04:29:41

标签: asp.net webforms

我有一个包含员工数据的数据表,这个数据绑定到网格视图。我有网格视图中的国家,排名,部分的标题下拉。每当选定的下拉索引发生变化时,我会使用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;

1 个答案:

答案 0 :(得分:0)

您是否尝试在过滤之前测试过滤器值是否设置为“全部”?它会是这样的:

$array = [];

这样,当(filter["Country"] == "All") || (a.Field<string>("Country")filter["Country"]) 设置为“All”时,filter["Country"]运算符不会计算第二个语句(称为短路运算符)。

希望它有所帮助!