2014-11-04 460 views
2

我正在編寫一個函數來使用列表中的屬性對List進行排序。 我需要使用列表AnimalList的屬性AgeMyClass對象obj進行排序,並將排序後的列表分配回obj。在執行功能obj後應該更新新的排序對象。我的列表值已經得到排序列表。我需要更新到obj。使用LINQ對包含列表和更新對象的對象進行排序

我已經嘗試了很多可能性,但無法將它列表綁定到對象。

public void SortBlocks(MyClass obj) 
{ 
    List<Animal> value = obj.AnimalList; 
    value = value.OrderBy(val => val.Age).ToList(); 
} 

public interface MyClass 
{ 
    List<Animal> AnimalList { get; set; } 
} 
public class Animal 
{ 
    public string color{get;set;} 
    public uint Age{get;set;} 
} 

在此先感謝!

+0

你如何初始化列表?你爲什麼不在初始化的時候下單? – 2014-11-04 07:48:47

回答

0

試試這個: -

List<Animal> value = obj.AnimalList; 
obj.AnimalList = value.OrderBy(x => x.Age).ToList(); 
0

您已經通過訂購動物產生的一個新的集合對象。要查看調用SortBlocks後obj中的排序結果,你需要分配值回obj.AnimalList:

public static void SortBlocks(MyClass obj) 
{ 
    List<Animal> value = obj.AnimalList; 
    value = value.OrderBy(val => val.Age).ToList(); 
    obj.AnimalList = value; 
} 

編輯:順便說一下,你可以做一個就地有點像這樣:

public static void SortBlocks(MyClass obj) 
{ 
    obj.AnimalList.Sort(new Comparison<Animal>((x, y) => x.Age.CompareTo(y.Age))); 
} 
相關問題