如何使用LINQ(vb.net)查找每列的最大值

时间:2013-04-16 15:17:06

标签: vb.net linq max multiple-columns

我正在使用LINQ(vb.net)编写代码来查找数据表中每列的最大值。我的数据如下:

+ ----------- + ---------- + ---------- + ---------- +
|日期| Value1 | Value2 | Value3 |
+ ----------- + ---------- + ---------- + ---------- +
| 1/1/2013 | 12 | 13 | 19 |
| 1/2/2013 | 9 | 20 | 17 |
| 1/3/2013 | 17 | 5 | 10 |
+ ----------- + ---------- + ---------- + ---------- +

我想编写一个代码来返回所有数据行中每列最大值的单个数据记录,这样我就可以将结果与gridview绑定:

+ ---------- + ---------- + ---------- +
| Max1 | Max2 | Max3 |
+ ---------- + ---------- + ---------- +
| 17 | 20 | 19 |
+ ---------- + ---------- + ---------- +

1 个答案:

答案 0 :(得分:2)

您可以使用Max

Dim rows = table.AsEnumerable()
Dim Max1 = rows.Max(Function(r) r.Field(Of Int32)("Value1"))
Dim Max2 = rows.Max(Function(r) r.Field(Of Int32)("Value2"))
Dim Max3 = rows.Max(Function(r) r.Field(Of Int32)("Value3"))

如果这些字段实际上是字符串(它们不应该),则必须使用Int32.Parse

如果您需要这些值作为GridView的数据源,则可以使用DataTable一行:

Dim tblSource = New DataTable()
tblSource.Columns.Add("Max1", GetType(Int32))
tblSource.Columns.Add("Max2", GetType(Int32))
tblSource.Columns.Add("Max3", GetType(Int32))
tblSource.Rows.Add(Max1, Max2, Max3)