【问题标题】:Is there a way that I can get a count of rows with a LINQ statement?有没有一种方法可以使用 LINQ 语句获取行数?
【发布时间】:2016-09-30 14:49:30
【问题描述】:

我一直在使用这个 LINQ 语句:

 var phrases = await db.Phrases
               .AsNoTracking()
               .ToListAsync();

但我需要的是计算短语中的行数。

我以前从未使用过 LINQ 来执行此操作。有没有办法可以做到这一点?

【问题讨论】:

标签: c# entity-framework linq


【解决方案1】:

sync version:

var phrasesCount = db.Phrases.Count();

async version(假设这是 EF):

var phrasesCount = await db.Phrases.CountAsync();

【讨论】:

  • 可能值得一提的是,如果您不返回项目,(我知道这里您似乎想要项目),您可以通过使用 .Query 从数据库中获得更高性能的计数() 方法:stackoverflow.com/questions/22186674/…
  • @ChadMcGrath 从问题和linked docs 看来,这仅适用于计数 related 实体,但此处并非如此。似乎QueryDbCollectionEntry 上的一个实例方法,所以我不确定你答案中的第一段代码是否编译。
【解决方案2】:

Charles 提供了有效的答案,但由于您以前从未使用过 LINQ,因此很高兴知道 .Count() 允许您将谓词作为参数传递。

例如,如果你想计算长度超过 30 个字符的短语,你可以这样写

var longPhrases = db.Phrases.Count(phrase => phrase.Lenght > 30);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 2022-06-11
    • 2022-01-07
    • 2023-04-03
    相关资源
    最近更新 更多