2012-03-29 60 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

相关问题