如何使用LINQ将id列表作为int

时间:2011-03-14 11:52:47

标签: c# .net linq ado.net .net-4.0

我的代码中有一个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"]);

但似乎没有任何效果。我很确定这是一个基本问题,请帮助新手。

2 个答案:

答案 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")