単一のDatarowからのオブジェクトの初期化
-
26-10-2019 - |
質問
データテーブルからリストを入力するには、通常、次のようなステートメントを書きます。
List<Foo> foos = dt.AsEnumerable().Select(dr =>
new Foo { Bar = Convert.ToIn32(dr["Bar"]),
Baz = Convert.ToDecimal(dr["Baz"]) }).ToList();
Datatableが1行だけを返すことがわかったときに、単一のオブジェクトを初期化するために同様のステートメントを書くにはどうすればよいですか 次の擬似コードのように:
Foo foo = dt.Rows[0].Select(dr =>
new Foo { Bar = Convert.ToIn32(dr["Bar"]),
Baz = Convert.ToDecimal(dr["Baz"]) });
私は1つのステートメントを書きたいと思っていますが、このような2行を避けたいです。
DataRow dr = dt.Rows[0];
Foo foo = new Foo { Bar = Convert.ToIn32(dr["Bar"]),
Baz = Convert.ToDecimal(dr["Baz"]) });
の組み合わせを試しました Where
, Select
, First
, Single
しかし、頭に釘を打つことはできません!
相変わらずどんな答えも感謝しています。
解決
Foo foo = dt.AsEnumerable().Select(dr =>
new Foo { Bar = Convert.ToIn32(dr["Bar"]),
Baz = Convert.ToDecimal(dr["Baz"]) }).Single();
他のヒント
さてあなた できる 行う:
Foo foo = new Foo { Bar = Convert.ToIn32(dt.Rows[0]["Bar"]),
Baz = Convert.ToDecimal(dt.Rows[0]["Baz"]) };
...しかし、個人的には、共通式のために別の変数を持つバージョンを好むでしょう。
所属していません StackOverflow