Как правильно использовать .OrderBy () в этом сценарии - PullRequest
0 голосов
/ 29 марта 2012

У меня есть интерфейс

   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 по возрастанию (по умолчанию)) Я не вижу никаких изменений в списке и элементы остаются на своих прежних позициях.Будучи объектами ProductShell, для которых установлено свойство Price, они по-прежнему упорядочены от высшего к низшему, а не наоборот.

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

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

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

1 Ответ

4 голосов
/ 29 марта 2012

.OrderBy создает новую последовательность. Вы должны использовать List.Sort здесь. Или отсортируйте его перед добавлением в список:

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