0

我正在尝试在数据表中查找列的最大值。下面是我的代码

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”类型

有人可以帮我解决这个问题。这一直困扰着我很久。提前致谢...

4

3 回答 3

2

您的字段ROWNUM是十进制类型,您正在尝试将其转换为字符串,这就是您收到错误的原因。

它应该是:

r.Field<decimal>("ROWNUM").ToString()

不太确定为什么要转换为布尔值并再次将 int 解析为 int。

您的查询应该是:

var maxVal = dsloadReferralCodes.Tables["dtReferralCodesTable"]
                    .AsEnumerable()
                    .Max(r => r.Field<decimal>("ROWNUM"));
于 2013-04-15T07:19:42.880 回答
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"]);
    }
于 2013-04-15T07:23:57.030 回答
0

关于什么:

maxVal = (decimal) dsloadReferralCodes.Tables["dtReferralCodesTable"].Compute( "Min(ROWNUM)", string.Empty );

(这不使用 LINQ,因此它也适用于 .net 2.0)

于 2014-01-21T14:22:49.780 回答