-3

我最近被介绍了find列表与Foreach循环的方法。我希望澄清声明的一部分是什么意思。考虑以下:

CartItem Item = Items.Find(c => c.ProductID == ProductID) && c.ProductName == "ABS001");
  • CartItem:列表中某个项目的类型
  • item:存储匹配产品的局部变量
  • 项目:要在其中搜索的列表

我不明白的是“c =>”的存在。在 Foreach 循环中,您只需将方法的局部变量定义为“c”,并且在后面的参数中它似乎是这样使用的,但是“=>”是什么意思或做什么?谢谢你。

4

1 回答 1

5

我不明白的是“c =>”的存在。

它是 lambda 运算符,用于lambda 表达式。这是一种指定委托(或表达式树)的紧凑方式 - 在这种情况下用作谓词,应用于列表中的每个项目,直到它返回true(此时返回该项目)。

请注意,当前您的代码无效,因为您有一个额外的括号而不是D(猜测) - 它应该是:

CartItem Item = Items.Find(c => c.ProductID == ProductID && c.ProductName == "ABS001");

熟悉 lambda 表达式是值得的,因为它们非常有用 - 特别是作为LINQ的一部分,这是查找项目、转换序列等的更现代的方式。例如,您可以使用:

CartItem Item = Items.FirstOrDefault(c => c.ProductID == ProductID && c.ProductName == "ABS001");

或查找所有项目:

IEnumerable<Item> matches = Items.Where(c => c.ProductID == ProductID && c.ProductName == "ABS001");

(LINQ 远不止这些——值得一读。)

于 2013-06-04T12:41:18.430 回答