我有界面
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);
答案 0 :(得分:4)
.OrderBy
创建一个新序列。你应该在这里使用List.Sort
。或者在添加到列表之前对其进行排序:
List<IStoreItem> StoreItems = repository.ProductShells
.Where(x => x.Published != null)
.OrderBy(x => x.Price)
.ToList<IStoreItem>();