一連のアイテムに対してExcept操作を実行したいと思います。
コードは次のようになります。
IEnumerable<DataGridViewColumn> dgvColumns = dataGridView.Columns.OfType<DataGridViewColumn>();
IEnumerable<DataColumn> dsColumns = dataSet.Tables[0].Columns.OfType<DataColumn>();
では、dgvColumnsにないdataSet.Tables [0]から列を選択するにはどうすればよいですか?DataGridViewの列はDataSetの列とは異なるタイプであることを知っています。一般的な値のサブセットのみを取得したいと思います。このような:
var ColumnsInDGV = from c1 in dgvColumns
join c2 in dsColumns on c1.DataPropertyName equals c2.ColumnName
select new { c1.HeaderText, c1.DataPropertyName, c2.DataType, c1.Visible };
上記のコードは、両方のセットにある「列」を選択します。そこで、DataSetにある別の「列」のセットを作成することを考えました。
var ColumnsInDS = from c2 in dsColumns select new { HeaderText = c2.ColumnName, DataPropertyName = c2.ColumnName, c2.DataType, Visible = false };
そして今、私はこのようなものを除いて実行できるようになります:
var ColumnsOnlyInDS = ColumnsInDS.Except<ColumnsInDGV>;
しかし、2つのエラーが発生しています。
- タイプまたは名前空間の名前'ColumnsInDGV'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)
- 暗黙的に型指定されたローカル変数にメソッドグループを割り当てることはできません
したがって、解決策は、クラスを作成してから、暗黙的に型指定されたローカル変数の代わりにそれを使用することです。しかし、この理由だけでクラスを開発することは、必ずしもオーバーヘッドではないと思います。
この問題に対する他の解決策はありますか?