如何在此方案中正确使用.OrderBy()

时间:2012-03-29 02:53:22

标签: c# linq entity-framework c#-4.0

我有界面

   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();  } }

    }

价格设置正确,但是当我尝试通过升序(默认)执行OrderBy时,我看不到列表中的任何更改,并且项目保留在旧位置。设置Price属性的ProductShell对象仍然从最高到最低排序,反之亦然。

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

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

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

1 个答案:

答案 0 :(得分:4)

.OrderBy创建一个新序列。你应该在这里使用List.Sort。或者在添加到列表之前对其进行排序:

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