2016-03-06 59 views
-8

我不是編程方面的專家,有時候我在工作時自由地挑戰自己,所以正如標題所說,只需使用簡單的for循環來獲取列的最大值而不使用「最大(...)「,這是可能的嗎?使用C#獲取表中特定列的最大值而不使用「Max(....)」?

編輯:下面是一個例子

string getMax() 
{ 
    SqlCommand com = new SqlCommand("Select Max(UnitPrice) From Products", con); 
    con.Open(); 
    string mx = com.ExecuteScalar().ToString(); 
    con.Close(); 
    return mx; 
} 

我的意思是最大的SqlCommand的,遺憾的混亂。

+0

爲什麼使用循環?只需按列desc進行排序並獲取第一個元素 –

+0

@juergend每種排序算法都必須像循環一樣通過所有元素。因此,除了輸入被排序的邊緣情況外,循環總是會表現得更好。 –

+0

@ThomasSchremser:沒有。循環完全相同,因爲它也必須遍歷所有元素。而且數據庫的排序可能會更快,您可以進入循環。順便說一句,在去循環之前進行排序會大大提高性能。查看http://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-an-unsorted-array –

回答

3

這絕對有可能。 想想Max()如何在幕後工作。 想想如何確定一個數字是否大於另一個數字,然後在for循環中應用該邏輯,並保持每次最大數字的跟蹤。

4

只需使用一個簡單的for-loop即可在不使用「Max(...)」的情況下獲得列的最大值,那有可能嗎?

那麼,誰實施Max的人沒有Max在他們的處置,因爲它尚未寫入。他們寫了它。所以你的問題的答案是「是的,這是可能的」。

如果你想知道他們是怎麼做的,閱讀Max的源代碼,然後你就會知道。

+2

該死的埃裏克,你打了我20秒:-)你可能想要包括[link](http://referencesource.microsoft.com/#System.Core/ System/Linq/Enumerable.cs,6ca1a80e1f22e519)。 –

相關問題