2010-10-25 130 views
3

我试图运行一个查询,其中获取位置的名称以及该位置的项目数。所以,如果我有一个包含3个位置的程序,我想知道该位置有多少个程序。我需要将这个与lambda表达式或linq用于实体。用lambda表达式计算

return Repository.Find(x => x.Location.Name.Count())...clearly missing something here. 

我们只能假设我有ProgramID,ProgramName中,LOCATIONNAME ...需要知道有多少程序在一个位置是在计划实体

+1

好家伙!你必须开始点击接受答案在你的问题!使其他人更容易,而且这是该网站的工作方式。 – 2010-12-17 12:52:30

回答

12

你可以这样说:

return repository.Count(x => x.Location == "SomeLocation"); 
2

你想知道所有位置的计数吗?

var locCounts = Repository.GroupBy(prog => prog.Location.Name).ToLookup(g => g.key, g => g.Count()); 
+0

马特...感谢您的帮助,这似乎工作。应用程序抛出一个异常,但我努力解决这个问题。当我将返回类型更改为ILookup <>时,我浏览了整个应用程序,并更改了所有适合的方法以查找并调用ILookup。但我没有得到这个错误 - 服务器没有提供有意义的回复;这可能是由于合同不匹配,会话过早关闭或内部服务器错误造成的。林肯定这是相当艰难的,你有一个意见的修复..但想通过这一点... – gevjen 2010-10-26 14:54:35

+0

什么是你返回类型之前?让我的上面的代码给出正确的类型应该不难。 – 2010-10-26 15:06:10

0

如果你repositoryPattern,使用此代码

Clients.Where(p => p.DateOfArrival >= DateTime.Now.AddDays(-3) && p.DateOfArrival <= DateTime.Now.AddDays(3)).Select(p => p.ID).Count() 

Repository Pattern

+0

DateOfArrival从哪里来?据我所知,这样的专栏没有任何提及或要求。我希望你不要复制粘贴你的代码。 – Codeek 2014-12-18 15:11:34

+0

DateOfArrival是我的实体列(类型是datetime)。 – Cagdas 2014-12-19 11:48:27