linq lambda等价于collection.Count( predicate )

mctunoxg  于 2023-11-14  发布在  其他
关注(0)|答案(5)|浏览(133)

以下代码的LINQ查询语法等效项是什么

  1. int[] numbers = { 3, 4, 5, 6, 7, 8 };
  2. int count = numbers.Count(x => x > 5 == true);

字符串
我试过这个,但它没有编译:

  1. var c = from number in numbers where number > 5 select numbers.Count;


这一个也没有编译:

  1. var c = from number in numbers where number > 5 select new {numbers.Count};

11dmarpk

11dmarpk1#

你很接近了,只需要像这样把LINQ表达式 Package 在括号中:

  1. var c = (from number in numbers where number > 5 select number).Count();

字符串

gpfsuwkq

gpfsuwkq2#

带有fromin的LINQ样式被称为“查询语法”:

  1. from row in table where row.col1 < 10 select row.col1

字符串
它通常包含比“方法语法”更少的lambda表达式:

  1. table.rows.Where(r => r.col1 < 10).Select(r => r.col1)


你也可以把它们混合起来。例如,这为所有行创建一个组,并计算行数。需要像FirstOrDefault()这样的方法调用来具体化值:

  1. int c = (
  2. from n in numbers
  3. where n > 5
  4. group n by 1 into g
  5. select g.Count()
  6. ).FirstOrDefault();

展开查看全部
bakd9h0s

bakd9h0s3#

你所谈论的是查询语法,并不是所有的LINQ方法在查询语法上都有等价的。最简洁的表达式是numbers.Count(x => x > 5)。从docs
某些查询操作,如CountMax,没有等效的查询表达式子句,因此必须表示为方法调用。方法语法可以以各种方式与查询语法组合。

mfuanj7w

mfuanj7w4#

  1. int[] numbers = { 3, 4, 5, 6, 7, 8 };
  2. var n = numbers.Where(x => x > 5).Count();

字符串

ht4b089n

ht4b089n5#

int[] numbers = { 3,4,5,6,7,8 }; var count = numbers.Count(x => x > 5);

相关问题