使用Linq的Datatable Union

时间:2012-03-14 06:21:30

标签: c# linq

我的数据表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吗?

1 个答案:

答案 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...

请注意,如果没有勾选任何复选框,则不会得到任何结果。