2017-05-24 59 views
0

什麼是SQL相當於:LINQ的COUNT()在選定字段

SELECT Id, Name, Count(PolicyNumber) ... 
Linq中

。我想這樣做:

var distinctClients = clientPolicies 
       .Select(i => new { i.ClientId, i.Name, i.PolicyNumber.Count() }) 
       .Distinct() 
       .OrderBy(i => i.Name).ToList(); 

有沒有辦法在Linq做到這一點?提前致謝。

+2

假設PolicyNumber是一家集;我不明白你的代碼爲什麼不起作用。你能解釋你有什麼問題嗎? – BradleyDotNET

+0

嘗試將'i.PolicyNumber.Count()'的結果賦給一個已命名的屬性。你看到語法錯誤還是異常? – jorgonor

+0

我收到錯誤:'Invalid anonymous type member declarator ...'this in i.PolicyNumber.Count()。我想我需要通過ClientId和Name來完成一個組。任何想法如何實現這一目標? –

回答

3
var distinctClients = clientPolicies 
      .GroupBy(i => new { i.ClientId, i.Name}) 
      .Select(g => new { ClientId= g.Key.ClientId, Name=g.Key.Name,Count=g.Count()}) 
      .OrderBy(i => i.Name).ToList(); 

我沒有測試,但它應該是關閉...

+0

OP - 這是正確的答案。請注意,在SQL中,如果在查詢中沒有GROUP BY,則無法執行COUNT操作。然後請注意,此答案使用LINQ GroupBy,從下一步中生成的聚合中獲取計數。 –

+0

感謝您的回覆。我得到錯誤:無效的匿名類型成員聲明...在'g.Count()'。有任何想法嗎? –

+0

查看更新的答案。 –