层次类Linq搜索

时间:2018-10-14 06:30:17

标签: c# linq

我正在尝试使用Linq搜索某个产品。 我将如何进行?

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 ) {}
}

public class CartLine
{
    public int CartLineId { get; set; }
    public Product Product { get; set; }
    public int Quantity { get; set; }
}

public class Product
{
    public int ProductId { get; set; }
    public string ProductName { get; set; }
    public string ProductDescription { get; set; }
    public string ImageLocation { get; set; }

    public int? ProductCategoryId { get; set; }
    public virtual ProductCategory ProductCategory { get; set; }
}

ShoppingCart shoppingCart = new ShoppingCart();

Linq查询搜索: 这一直在给我错误,尝试使用Resharper使其进入我的存储库模式,进行测试

 shoppingCart.Find(p=>p.CartLine.Product.ProductName) = "SamsungTV"

3 个答案:

答案 0 :(得分:2)

shoppingCart.Find(p=>p.CartLine.Product.ProductName)行中,p已经是CartLine。您还需要在查询中比较ProductName。试试

CartLine cartLine = shoppingCart.Find(p => p.Product.ProductName == "SamsungTV");

答案 1 :(得分:1)

对于LINQ,您可以使用“哪里”吗?

var result =  shoppingCart.Product.Where(x => x.ProductName == "SamsungTV").ToList();

现在,只有在产品名称为Samsung TV的情况下,您才能在“结果”中拥有所有内容的列表,以进行所需的操作。

答案 2 :(得分:0)

如果要查找产品名称为CartLine的{​​{1}}实例,则可以使用以下表达式:

"SamsungTV"

它将使用顺序(二进制)排序规则查找产品,而忽略产品名称的大小写。如果要使用其他字符串比较规则,请使用StringComparison枚举对其进行定义。