元の 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" があります。簡単に思えますが、うまく機能させることができないようです。