、、のDataTable
3 つの列があるとします。C1
C2
C3
var dt = new DataTable();
dt.Columns.Add("C1", typeof (int));
dt.Columns.Add("C2", typeof (string));
dt.Columns.Add("C3", typeof(string));
dt.Rows.Add(1, "1", "1");
dt.Rows.Add(1, "1", "2");
dt.Rows.Add(1, "2", "2");
私は列へのナゲットでDynamic Linqを使用し、以下のコードが好きで、完全に機能します:GroupBy
C1
C2
var output = dt.AsEnumerable()
.AsQueryable()
.GroupBy("new(it[\"C1\"] as C1, it[\"C2\"] as C2)", "it");
お気づきの場合は、として提示するハードコード文字列 があります。このアイデアは次のように得られます。it
DataRow
. it
たとえば、文字列に変更しようとするとrow
:
GroupBy("new(row[\"C1\"] as C1, row[\"C2\"] as C2)", "row");
実行時エラーが発生します:
タイプ 'DataRow' にプロパティまたはフィールド 'row' が存在しません
だから、なぜハードコーディング it
しなければならないのか、あまり頭がすっきりしませんDataRow
か?これには何か理由がありますか。