2012-03-29 159 views
0

使用.OrderBy()我有接口如何正確地在這種情況下

public interface IStoreItem 
    { 

     decimal Price { get; } 
    } 

和實現它的類。

public class ProductShell : IStoreItem 
    { 

     EFDbContext repository = new EFDbContext(); 


     public int ShellID { get; set; } 
     public bool? Published { get; set; } 

     public decimal Price { get { return repository.ShellMembers.Where(x => x.ShellID == ShellID).Select(x => x.Product.ListPrice).Sum(); } } 

    } 

價格是否設置正確,但是當我試圖通過升(默認)我沒有看到列表中的任何改變和物品留在自己的老位置做一個排序依據。作爲設置Price屬性的ProductShell對象,仍然按照從高到低的順序排列,反之亦然。

  List<IStoreItem> StoreItems = new List<IStoreItem>(); 

      StoreItems.AddRange(repository.ProductShells.Where(x => x.Published != null)); 

      StoreItems.OrderBy(x => x.Price); 

回答

4

.OrderBy創建新的序列。您應該在這裏使用List.Sort

List<IStoreItem> StoreItems = repository.ProductShells 
    .Where(x => x.Published != null) 
    .OrderBy(x => x.Price) 
    .ToList<IStoreItem>(); 
+0

謝謝..像這樣的東西也工作得很好:或添加到列表之前對其進行排序StoreItems = StoreItems.OrderBy(X => x.Price).ToList();我有不同類型的對象實現該列表中的接口,所以我需要在添加完所有內容後進行排序。 – LaserBeak 2012-03-29 05:09:23