我的代码中有一个DataTable,比如pdt。我只想选择所有table["id"]
并填充整数数组。
我可以继续使用foreach
,但我正在尝试学习Lambda表达式。
我无法弄清楚如何处理这个问题。
我试过了
List<int> Ids = pdt.Select(row => row["Id"]; return Convert.ToInt32(r));
和
int[] Ids = pdt.Select(row => row["Id"]);
但似乎没有任何效果。我很确定这是一个基本问题,请帮助新手。
答案 0 :(得分:24)
如果你想要一个数组,你需要使用ToArray()
扩展方法......但你也想要使用DataTableExtensions.AsEnumerable()
扩展方法来制作数据表强烈输入DataRow
序列:
int[] ids = pdt.AsEnumerable()
.Select(r => (int) r["Id"])
.ToArray();
编辑:正如abatishchev的回答所述,此处显式转换的替代方法是使用Field<T>
扩展方法(在DataRowExtenions
中):
int[] ids = pdt.AsEnumerable()
.Select(r => r.Field<int>("Id"))
.ToArray();
答案 1 :(得分:2)
使用类型安全通话:
r.Field<string>("Id")