c# - 如何从数据表中获取最高值?

标签 c# linq datatable

我有一个包含几列的数据表。我想返回与我的 id 匹配的那个,在 verlabel 列中具有最高值,在这种情况下我想返回 1.1

Datatable structure

我如何实现这一目标?当前代码只是将列名返回到我的字符串变量中,而不是实际值。

Namespace.EnquiryEngine.DataLists ds2 = new Namespace.EnquiryEngine.DataLists("VERSION");
Namespace.Common.KeyValueCollection ds2params = new Namespace.Common.KeyValueCollection();
ds2params.Add("id", class.ID); 
ds2.ChangeParameters(ds2params);
System.Data.DataTable dt = ds2.Run(false) as System.Data.DataTable;
String version = Convert.ToString(dt.Rows[0]["version"]);

新代码:

var highestVersion = (from row in dt.AsEnumerable() 
                  where row.Field<int>("id") == doc.ID
                  select row.Field<double>("verlabel")).Max();

最佳答案

另一个选项将生成 DataRow,可以从中选择任何相关的 Column,前提是它不是 Null

var dataRow =   dt.AsEnumerable()
                            .Where(row => row.Field<string>("id") == class.ID)
                            .OrderByDescending(row => row.Field<double>("verlabel"))
                            .FirstOrDefault();

var result = dataRow?["ColumnName"]

关于c# - 如何从数据表中获取最高值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39978539/

相关文章:

asp.net - 除了 View 状态之外还有其他方式存储数据源吗?

c# - Entity Framework ,获取选中项的周边项

c# - 遍历两个相同的数据源

vb.net - 为什么说从 Web 服务返回 DataTables 特别糟糕?

javascript - DataTables selectall Checkbox 在第二页显示选中?

.net - LINQ-to-SQL 中不区分大小写的字符串比较

javascript - 如何从模型创建数组?

c# - IntPtr 到回调函数

c# - 进行隧道事件的正确方法

c# - LINQ to Entities - 如何从实体返回单个字符串值