Ошибка не требует пояснений.Два варианта - вы можете создать псевдоним, используя конкретный тип (например, List<CartLine>
), но вместо этого я бы порекомендовал вам определить класс, который наследуется от List<CartLine>
(или любой другой коллекции, которая лучше всего соответствует вашим потребностям):
public class ShoppingCart : List<CartLine>
{
// implement constructors you want available
public ShoppingCart(){}
public ShoppingCart( IEnumerable<CartLine> collection ) : base( collection ) {}
public ShoppingCart( int capacity ) : base( capacity ) {}
// the benefit here is you can add useful properties
// if CartLine had a price you could add a Total property, for example:
public decimal Total => this.Sum( cl => cl.Quantity * cl.Price );
}
Тогда вы можете использовать в соответствии с запросом:
var cart = new ShoppingCart();
cart.Add( new CartLine() { ... } );
var cartTotal = cart.Total;
... etc ...
Инициализатор коллекции также будет работать:
var cart = new ShoppingCart() { new CartLine() { ... }, ... }
Или инициализировать с существующим IEnumerable<CartLine>
, например IQueryable<CartLine>
, используяEntity Framework:
var cart = new ShoppingCart( dbContext.CartLines.Where( ... ) );