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 に答える