所以我正在从一本书中实现一个项目,我对于为什么需要这些lambda表达式感到有点困惑。Lambda的使用让我感到困惑
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
,我意识到产品是一个列表,是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; }
}
我一般困惑,lambda表达式在这些事情的目的定义。是否有一些与p=>p.Product.ProductID == product.ProductID
等同的东西我看不到使用Lambdas,所以我可以更多地了解它是什么速记?
我似乎无法将我的头围绕在这一个,并提前感谢。
啊,那确实有很大的意义。所以其中一些实现包含迭代器,并且您正在通过它来解析每个项目。 所以我明白传递函数来解决在迭代器中构建集合,然后请求一个问题, 我猜并不是所有这些linq事物都包含迭代器。我在另一个类中看到[这是在一个产品] .OrderBy(p => p.ProductID) 我有点困惑,因为它不像使用ProductID来解决某些设置,它以某种方式将它用作一个标准?它的功能就像对ProductID的引用一样吗? – Jordan 2011-12-15 01:46:10
@Jordan:nope,在`OrderBy`示例中,您只需传递将用于返回集合用于排序的值的lambda。你可以传递`p => generate-random-value`并且每次都得到随机排序。所以它不是对`ProductID`的引用,而只是一些价值。 – zerkms 2011-12-15 01:49:21