2013-04-15 55 views
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'

有人可以幫助我解決問題。這一直困擾着我。在此先感謝...

+0

錯誤消息是非常明確的IMO .. –

回答

2

你的領域ROWNUM是十進制類型和你試圖將其轉換爲字符串,這就是爲什麼你所得到的錯誤。

它應該是:

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

真的不知道爲什麼要轉換爲布爾和解析一個int再次詮釋。

您的查詢應該是:

var maxVal = dsloadReferralCodes.Tables["dtReferralCodesTable"] 
        .AsEnumerable() 
        .Max(r => r.Field<decimal>("ROWNUM")); 
+1

謝謝哈比卜,謝謝你的回答。這幫助了我。但是,如果數據表中沒有數據,它看起來像是拋出和錯誤。假設數據表是空的而沒有數據行,這是錯誤。 「指定的演員表無效。」 – user545359

+1

@ user545359,你應該檢查表存及其是否存在像'如果(dsloadReferralCodes!= NULL && dsloadReferralCodes.Tables.Count> 0 && dsloadReferralCodes.Tables [ 「dtReferralCodesTable」]!= NULL && dtReferralCodesTable.Tables任何行[「dtReferralCodesTable 「] .Rows.Count> 0)' – Habib

+0

再次感謝哈比卜。你的回答幫了我很多。我對發佈我的問題答案表示歉意。我是C#以及Stackoverflow論壇的新手。這個論壇真的很棒。 – user545359

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"]); 
    } 
+0

嗨Arshad,謝謝你的回覆。它看起來像語法給了我數據表中的最大行。其實我正在尋找特定列的最大值。假設列「rownum」的最大值是('8','9','10','11')。我想在這些值中找到'11'的最大值。 – user545359

+0

那麼,你有沒有嘗試過以上? – Arshad

+0

是的,我確實嘗試了上述解決方案,並基於最大值返回整行。有什麼辦法可以獲得ROWNUM列的最大值? – user545359

0

什麼:

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

(不使用LINQ ,所以它也適用於.net 2.0)