2013-03-19 45 views
0

我需要保留原始DataTable並根據列表值進行過濾。我試圖隱藏與列表不匹配的行,但它不能立即運行。我不想複製列表到另一個dataTable,並綁定我的dataGridView是因爲我有太多捆綁原來的DataTable。篩選僅適用於少數情況,但列表僅包含所需的值。有沒有LINQ解決方案?只有C#請。這是我得到我的名單。還有另一個dataGridView,它包含我需要過濾的數據表的主鍵。關鍵在於組合框。使用List結果的DataTable.RowFilter?

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」 我需要過濾僅包含這些值的行值。我知道這似乎很容易,但我似乎無法得到它的工作。

回答

0

請改用DataView。

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

就像那樣。