DataTable.RowFilter使用List结果?

时间:2013-03-19 06:46:22

标签: linq datagridview ado.net datatable

我需要保留原始DataTable并根据列表值对其进行过滤。我试图隐藏与列表不匹配的行,但它不会立即生效。我不想将列表复制到另一个dataTable并将我的dataGridView绑定到原因,因为我太多地绑定到原始的DataTable。过滤仅适用于少数条件,但列表仅包含所需的值。是否有LINQ解决方案? C#只请。这就是我的名单。还有另一个dataGridView,它包含我需要过滤的数据表的主键。它的关键是在一个组合框中。

DataTable MainTable = MainDataSet.Tables["MyTable"];

DataTable lookupTable = lookupDataSet.Tables["MyLookupTable"];

var List = (from x in lookupTable.AsEnumerable()
            where x.Field<string>("kAutoInc") == comboBox.SelectedValue.ToString()
            select x.Field<int>("Pct")).ToList();

var a = MainTable.AsEnumerable().Where(r =>
                  List .Any(id => id == r.Field<int>("Pct")));

这给出了int 30,40,50,60 ...

的值

DataGridView有一个匹配的列“Pct”,我需要过滤只包含这些值的行。我知道这似乎很容易,但我似乎无法让它发挥作用。

1 个答案:

答案 0 :(得分:0)

请改用DataView。

dataview dv=new dataview(datatable);  
dv.filter=string.format("column1={0}","value1");  

就像那样。