有人可以請我解釋一下,匿名類型究竟做了什麼,可以做什麼?匿名類型c#排序
- >它是如何通過價值訂購,你怎麼辦呢降序或升序...有什麼區別代碼提前
.OrderBy(value=> value.numbers);
感謝。
有人可以請我解釋一下,匿名類型究竟做了什麼,可以做什麼?匿名類型c#排序
- >它是如何通過價值訂購,你怎麼辦呢降序或升序...有什麼區別代碼提前
.OrderBy(value=> value.numbers);
感謝。
OrderBy
和匿名類型之間沒有任何關係。 OrderBy
是一個LINQ函數,它需要一個lambda表達式,該表達式看起來像x => x.Something
,基本上意味着對於x
做x.Something
。您可能會混淆兩者,因爲您的訂單之前有一個生成匿名類型的Select
。這並不重要。您可以通過任何IEnumerable<T>
進行訂購。而且,在C#中,匿名類型幾乎與普通類型相同。他們的行爲真正不同的唯一方式就是執行反思任務。
Anonymous types是在您的源代碼中尚未定義的對象類型。相反,CLR將在編譯時定義它們。下面是使用在源代碼中的匿名類型的例子:
var anon = new { A = 1, B = 2, C = 3 };
至於排序依據,這是使用自IEnumerable繼承的對象上LINQ語法。 OrderBy(...)
(或OrderByDescending(...)
)將對象的屬性作爲參數,並根據屬性的類型對IEnumerable中的所有項目進行排序。
OrderBy
對Lambda評估的類型(例如整數)使用默認比較並使用它進行排序。相同的值以相對於彼此的原始順序出現。 OrderByDescending
給你DESC
的訂單。
只需.......
.OrderBy(value=> value.numbers);
相同
.OrderBy(x=> x.numbers);
甚至
.OrderBy(jedi=> jedi.numbers);
的變體表示表達式的參數名稱。它由參數屬性進行排序,在這種情況下爲numbers
。
這種情況下的升序是自動的。 OrderByDescending(value=> value.numbers)
是一種實現逆向的方法。
您提供的線基本上等同於類似:
yourListOfSomeType.OrderBy<someType>(value=> value.number);
其中someType
是必須包含一個成員number
,可用於排序類型。
注:我將numbers
更改爲number
,因爲這樣做更有意義。這不會是一個事物清單,而是一個成員(說一個財產),每個SomeType
在yourListOfSomeType
必須有。
實施例:
public class SomeType{
public int numbers {get; set;}
}
當<someType>
缺少部分,假設.Net
將能夠猜出的類型,和正確處理的邏輯。如果它不能,那麼它會拋出異常。
此外,請注意,代碼中的value
只是用於在整個迭代過程中引用列表中的每個SomeType
的變量的名稱;把它看作一個在括號內有效的變量名,並且簡單地指向每個SomeType
。
PS:要訂購降序排列的項目,使用LINQ的互補方法:
yourListOfSomeType.OrderByDescending(item => item.number);
你似乎在努力工作,今天你周圍LINQ的方式。看看http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b尋求幫助。 –