我的数据表dt的列如下
名称,价值,关键字,IsMarkets,IsBudgets,IsPrograms
我有3个复选框chkbxBudgetsSearch,chkbxMarketsSearch,chkbxProgramsSearch
我想在以下条件下过滤
如果chkbxMarketsSearch.IsChecked == true 应显示所有IsMarkets = True的行
如果chkbxBudgetsSearch.IsChecked == true 应显示所有IsBudgets = True的行
类似于节目
如果同时点击两个复选框,则为 IsMarkets = True和IsBudgets = False / IsMarkets = False和IsBudgets = True的所有行 应显示/ IsMarkets = True和IsBudgets = True
注意:它不一定只有IsMarkets = True和IsBudgets = True
接近工会运作 任何人都可以为此扼杀linq吗?
答案 0 :(得分:1)
var result = Enumerable.Empty<DataRow>();
var linqTable = table.AsEnumerable();
if (chkbxMarketsSearch.IsChecked)
{
results = results.Union(linqTable.Where(row => row.Field<bool>("IsMarkets"));
}
if (chkbxBudgetsSearch.IsChecked)
{
results = results.Union(linqTable.Where(row => row.Field<bool>("IsBudgets"));
}
if (chkbxProgramsSearch.IsChecked)
{
results = results.Union(linqTable.Where(row => row.Field<bool>("IsPrograms"));
}
// Probably best to call `ToList()` here before doing much more work...
请注意,如果没有勾选任何复选框,则不会得到任何结果。