要从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"]) });
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"]) };
…但我个人更喜欢有单独变量的版本