2010-10-25 170 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