在 C# 中,是否可以通过简单的指令(没有 LINQ,没有 For cicle)从 DataSet 的所有行中获取特定列的所有值?
最佳答案
为什么没有 LINQ?对于没有同样限制来到这里的人,这里有三种方法可以做到这一点,下面两种都使用 LINQ。
C#
List<object> colValues = new List<object>();
//for loop
foreach (DataRow row in dt.Rows) {
colValues.Add(row["ColumnName"]);
}
//LINQ Query Syntax
colValues = (from DataRow row in dt.Rows select row["ColumnName"]).ToList();
//LINQ Method Syntax
colValues = dt.AsEnumerable().Select(r => r["ColumnName"]).ToList();
VB
Dim colValues As New List(Of Object)
'for loop
For Each row As DataRow In dt.Rows
colValues.Add(row("ColumnName"))
Next
'LINQ Query Syntax
colValues = (From row As DataRow In dt.Rows Select row("ColumnName")).ToList
'LINQ Method Syntax
colValues = dt.Rows.AsEnumerable.Select(Function(r) r("ColumnName")).ToList
要在 DataTable
上使用 AsEnumerable
方法,您必须有一个对 System.Data.DataSetExtensions 的引用,它添加了 LINQ extension methods .否则,您可以将 DataTable
的 Rows
属性转换为 DataRow
类型(您不必使用 Query 语法执行此操作,因为它会自动为您转换)。
关于c# - 从 DataSet 中获取列的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1080071/