C# 如何从数据表中获取最高值?
我有一个C# 如何从数据表中获取最高值?,c#,linq,datatable,C#,Linq,Datatable,我有一个datatable,它有几个列。我想返回一个与我的id匹配的,在verlabel列中具有最高值,在本例中我想返回1.1 我如何做到这一点?当前代码只是将列名返回到我的字符串变量中,而不是实际值 Namespace.EnquiryEngine.DataLists ds2 = new Namespace.EnquiryEngine.DataLists("VERSION"); Namespace.Common.KeyValueCollection ds2params = new Namesp
datatable
,它有几个列。我想返回一个与我的id匹配的,在verlabel
列中具有最高值,在本例中我想返回1.1
我如何做到这一点?当前代码只是将列名返回到我的字符串变量中,而不是实际值
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();
var highestVersion=(来自dt.AsEnumerable()中的行)
其中row.Field(“id”)==doc.id
选择row.Field(“verlabel”).Max();
我自己还没有试过,但可能是有什么原因:
var highestVersion = (from row in dt.AsEnumerable()
where row.Field<string>("id") == class.ID
select row.Field<double>("verlabel")).Max();
var highestVersion=(来自dt.AsEnumerable()中的行)
其中row.Field(“id”)==class.id
选择row.Field(“verlabel”).Max();
另一个选项将产生数据行
,从中可以选择任何相关的列
,只要该列不为空
var dataRow = dt.AsEnumerable()
.Where(row => row.Field<string>("id") == class.ID)
.OrderByDescending(row => row.Field<double>("verlabel"))
.FirstOrDefault();
var result = dataRow?["ColumnName"]
var dataRow=dt.AsEnumerable()
.Where(row=>row.Field(“id”)==class.id)
.OrderByDescending(行=>row.Field(“verlabel”))
.FirstOrDefault();
var结果=数据行?[“ColumnName”]
使用以下代码:
var res = dt.AsEnumerable().where(a => a.Field<String>("id") == class.ID).Select(b => b.Field<double>>("verlabel").Max();
var res=dt.AsEnumerable()。其中(a=>a.Field(“id”)==class.id)。选择(b=>b.Field>(“verlabel”).Max();
看看这将导致加倍
而不是数据行
我喜欢这个答案的外观-简单而中肯。不幸的是,我得到了关于系统.Data.EnumerablerRowCollection
的例外,没有包含max
的定义。有什么想法吗?@GiladGreen我现在有点放弃了。我“我毫不怀疑您的解决方案(以及您的,Mrinal)在任何其他环境中都能工作。我认为可能正是这个应用程序需要调用一些定制的方法。我将进行调查。感谢您和我的想法在windows上始终保持系统重启和Visual studio重启作为装甲中可能的选项,总是很方便,一切都非常好:)@GiladGreen这似乎是供应商SDK的问题,而不是代码本身的问题。我在SDK之外成功地测试了它,与供应商一样,没有出现任何问题。。。