質問

データテーブルからリストを入力するには、通常、次のようなステートメントを書きます。

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"]) };

...しかし、個人的には、共通式のために別の変数を持つバージョンを好むでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top