-1

DataTable から List を設定するには、通常、次のようなステートメントを記述します。

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

WhereSelectFirstの組み合わせを試してみSingleましたが、頭に釘が打たれません!

いつものようにどんな答えでも大歓迎です。

4

2 に答える 2

2
Foo foo = dt.AsEnumerable().Select(dr =>
    new Foo { Bar = Convert.ToIn32(dr["Bar"]),
              Baz = Convert.ToDecimal(dr["Baz"]) }).Single();
于 2011-10-18T13:34:31.437 に答える
0

あなたができること:

Foo foo = new Foo { Bar = Convert.ToIn32(dt.Rows[0]["Bar"]),
                    Baz = Convert.ToDecimal(dt.Rows[0]["Baz"]) };

...しかし、個人的には、共通の式に別の変数を使用したバージョンを好みます。

于 2011-10-18T13:34:56.087 に答える