我试图找到数据表中列的最大值。以下是我的代码
var maxVal = dsloadReferralCodes.Tables["dtReferralCodesTable"].AsEnumerable().Max(r => Convert.ToBoolean(int.TryParse(r.Field<string>("ROWNUM"), out intROWNUM)) ? (int?)intROWNUM : null);
及以下id我在尝试获取最大值并将其分配给intROWNUM时得到的错误
无法将'System.Decimal'类型的对象强制转换为'System.String'
有人可以帮助我解决问题。这一直困扰着我。提前谢谢......
答案 0 :(得分:2)
您的字段ROWNUM
是十进制类型,并且您正在尝试将其强制转换为字符串,这就是您收到错误的原因。
应该是:
r.Field<decimal>("ROWNUM").ToString()
不确定为什么要转换为Boolean并再次将int解析为int。
您的查询应该是:
var maxVal = dsloadReferralCodes.Tables["dtReferralCodesTable"]
.AsEnumerable()
.Max(r => r.Field<decimal>("ROWNUM"));
答案 1 :(得分:2)
您可以使用DataTable.Select():
以简单的方式获取它DataRow [] dr = dsloadReferralCodes.Tables["dtReferralCodesTable"].Select("ROWNUM= MAX(ROWNUM)");
if(dr !=null)
{
// Console.WriteLine(dr[0]["RowNum"]);
int maxVal=Convert.ToInt32(dr[0]["RowNum"]);
}
答案 2 :(得分:0)
怎么样:
maxVal = (decimal) dsloadReferralCodes.Tables["dtReferralCodesTable"].Compute( "Min(ROWNUM)", string.Empty );
(这不使用LINQ,所以它也适用于.net 2.0)