2016-09-30 78 views
-5

我一直用这个LINQ声明:有没有一种方法可以使用LINQ语句来计算行数?

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

但我需要的是让在词的行数的计数。

我从来没有用过LINQ来做到这一点。有没有办法可以做到这一点?

+10

'.Count中()'???? – Habib

+3

@Habib说了什么,也是软件开发的黄金法则之一:RTFM https://msdn.microsoft.com/en-us/library/mt693024.aspx –

回答

4

sync version

var phrasesCount = db.Phrases.Count(); 

async version(假设这是EF):

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

可能值得一提的是,不要返回项目,(我知道这里你似乎想要项目),你可以通过使用.Query()方法从数据库中获得更高性能的计数:http://stackoverflow.com/questions/22186674/entity -framework-poor-count-performance –

+0

@ChadMcGrath从问题和[链接文档](https://msdn.microsoft.com/en-us/data/jj574232.aspx#queryCount)看来,这只适用于统计*相关*实体,这里不是这种情况。看来[查询](https://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.dbcollectionentry.query(v = vs.113).aspx#M:System.Data。 Entity.Infrastructure.DbCollectionEntry.Query)是'DbCollectionEntry'上的一个实例方法,所以我不确定你的答案中的第一位代码是否被编译。 –

1

查尔斯提供有效的答案,但因为你从来没有与LINQ工作过,这是很好的知道, .Count()允许您将谓词作为参数传递。

例如,如果你想数是超过30个字符的短语,你可以写这样的事情

var longPhrases = db.Phrases.Count(phrase => phrase.Lenght > 30); 
相关问题