0

我需要保留原始 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”,我需要过滤仅包含这些值的行。我知道这看起来很容易,但我似乎无法让它发挥作用。

4

1 回答 1

0

请改用 DataView。

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

像那样。

于 2013-03-25T09:19:23.160 回答