2014-10-31 62 views
-3

我有這樣的結構:如何排序結構C#

struct kluczyk 
    { 
     int id; 
     char litera; 
    } 

製作的列表:

List<kluczyk> posortuj = new List<kluczyk>(); 
     for (int i = 0; i < 10; i++) 
     { 
      kluczyk temp = new kluczyk(some char here, i); 
      posortuj.Add(temp); 
     } 

如何排序,這份名單由litera?

+2

對於如何對列表進行排序以及基於研究結果實施解決方案有哪些問題,您做了哪些研究? – Servy 2014-10-31 19:30:46

+0

也許'posortuj.OrderBy(k => k.litera);'? – 2014-10-31 19:30:57

+1

['List .Sort(IComparer )'](http://msdn.microsoft.com/zh-cn/library/234b841s%28v=vs.110%29.aspx)和['IComparer ']( http://msdn.microsoft.com/en-us/library/8ehhxeaf%28v=vs.110%29.aspx)以底部爲例。 – 2014-10-31 19:32:00

回答

1

有很簡單的LINQ方法來完成按對象的屬性排序。一個是排序依據:

var sortedEnumerable = unsortedEnumerable.OrderBy(a => a.property); 

同樣,你可以使用OrderByDescending,以確定上述的相反順序:

var sortedEnumerable = unsortedEnumerable.OrderByDescending(a => a.property); 

注意,這些返回一個新的枚舉不到位排序。

如果你需要更復雜的排序邏輯,或者如果你想排序kluczyk對象本身而不是任何給定的屬性,你會希望創建自己的對象來實現IComparer並建立小於/等於/更大的關係你的物體之間。

布拉德克里斯蒂包括一個鏈接List(T).Sort (IComparer<T>),我在這裏轉載,除非他想自己做出答案。

+0

你自己的答案是好的。我只是想避免引入lambda和使用System.Linq; include。 – 2014-10-31 20:55:43

+0

@BradChristie哦,是的,我不一定認爲這樣比較好。但是評論會自動刪除,所以如果我看到有用的評論和沒有答案的答案,我喜歡至少指出評論者提供的資源。 – furkle 2014-10-31 20:57:02