在C#中,是否可以通过简单指令(无LINQ,否为cicle)从DataSet的所有行中获取特定列的所有值?获取DataSet中列的所有值
4
A
回答
2
只能遍历行,如Utaal noted in this answer。
您可能认为DataTable.DefaultView.RowFilter
将支持分组,但它不支持它(它主要提供Where
子句的等效功能,包含一些基本聚合 - 虽然不是简单的分组)。
3
据我所知,没有直接的方法来获得这些;但for循环非常简单,显然不会比其他任何东西更耗费资源。
0
除了Utaal的回答,您可以使用查询的结果填充新的DataTable对象,该查询只选择原始数据源中的一列,假设它是RDBMS。这样做的好处是可以让你指定易于在代码中表达的东西,但易于在SQL中表达,如DISTINCT
查询。
11
为什么不使用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
要使用AsEnumerable
方法上DataTable
,你必须有一个参考其添加System.Data.DataSetExtensions LINQ extension methods。否则,只需将DataTable
的Rows
属性作为DataRow
类型(您不必使用查询语法执行此操作,因为它会自动为您投射)。
+0
我无法在过时的.NET Compact Framework应用程序中使用LINQ。但是你的答案可能对其他人有用。 – 2013-07-11 18:14:09
相关问题
- 1. 获取散列表中的所有值
- 2. 获取所有选中值的列表
- 3. ListCtrl - wxPython获取列中的所有值
- 4. 获取一列中所有行的值
- 5. 获取Sqllite中的所有列值android
- 6. 获取DataSet中的
- 7. 从asp.net中的dataSet获取单个值
- 8. jquery从表列中获取所有值
- 9. 获取所有列的最常见值
- 10. BeautifulSoup获取特定列的所有值
- 11. 获取所有值的排列 - 成对
- 12. 获取所有值
- 13. 获取所有值?
- 14. 如何获取DataSet的一列?
- 15. 获取PostgreSQL中列中所有现有值的集合
- 16. 获取所有多个列表框值
- 17. Perl,获取所有散列值
- 18. 获取dataGridTextboxColumn的所有值
- 19. PHP获取阵列中特定列的所有值
- 20. 获取Firebird中所有序列及其值的列表SQL
- 21. 从DataSet获取值到一个变量
- 22. 无法单独获取所有列值,而是获得一列中的所有值postgresql --9.5
- 23. 获取地图中的所有值
- 24. 获取mysql中所有值的总和
- 25. 获取ul中所有量程的值
- 26. 获取memcached中的所有值
- 27. 获取Firebase中的所有子值android
- 28. 如何从数组中的散列中获取所有值?
- 29. 如何使用jdbc中的ResultSet.getBinaryStream()从所有列中获取值?
- 30. 获取所有值所需的HashMap
这就是我的想法。我希望这可以成为一种方式。谢谢。 – 2009-07-03 17:04:55