加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Lambda的使用令我困惑

发布时间:2020-12-16 00:01:47 所属栏目:百科 来源:网络整理
导读:所以我正在从一本书中实现一个项目,我有点困惑为什么我需要这些lambdas. public class Cart{ private ListCartLine lineCollection = new ListCartLine(); public class CartLine { public Product Product { get; set; } public int Quantity { get; set; }
所以我正在从一本书中实现一个项目,我有点困惑为什么我需要这些lambdas.

public class Cart
{
    private List<CartLine> lineCollection = new List<CartLine>();
    public class CartLine
    {
        public Product Product { get; set; }
        public int Quantity { get; set; }
    }
    public void RemoveLine(Product product)  
    {
        lineCollection
          .RemoveAll(p => p.Product.ProductID == product.ProductID);
    }
}

为什么我需要.RemoveAll(p => p.Product.ProductID == product.ProductID)?
它只是与.RemoveAll需要一个lambda表达式吗?我不知道为什么我不能使用this.Product.ProductID,我意识到Product是一个列表,是p => P.Product进行某种迭代并比较值直到找到它需要的东西?

产品定义于

public class Product
{
    public int ProductID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
    public string Category { get; set; }
}

我常常对Lambdas在这些事情上的目的感到困惑.是否有一些等于p => p.Product.ProductID == product.ProductID
我可以看到没有使用Lambdas所以我可以更多地了解它是什么简写?

我似乎无法绕过这一个,并提前感谢.

解决方法

RemoveAll实现有一些迭代器,它为每次迭代调用你的匿名函数.喜欢:

iterator {
    your_lambda_function(current_item);
}

并且p => p.Product.ProductID == product.ProductID可以改写为:

delegate(CartLine p) { return p.Product.ProductID == product.ProductID; }

这看起来有点清楚

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读