2015-05-31 49 views
0

我希望你們中的一個可以幫助我解決這個問題: 下面給出的方法,我可能會導致要在數據庫服務器上完成計數,而不是檢索所有行,並且函數不應該爲每個搜索名稱運行查詢,它應該爲該函數的每次調用運行恰好1個SQL語句。 enter image description hereLINQ到實體弄清楚行的計數,而返回行

+0

鍵入代碼通常是一個更好的主意,以便其他人可以複製它。要將文本格式化爲代碼,每行必須以四個空格開頭。 – PiotrWolkowski

回答

4

通過使用Contains可以顯着簡化您的查詢,這將轉換爲WHERE IN子句。然後簡單地計數匹配的行。

public static int CountEmployeesByName(IEnumerable<string> namesToSearch) 
{ 
    using (var context = new ApplicationEntities()) 
    { 
      return context.employees 
         .Where(e => namesToSearch.Contains(e.name)) 
         .Count(); 
    } 
} 
+0

對不起,我忘了說:你能做到這一點嗎?第一部分只有一行代碼更改,第二部分是一行代碼更改? –

+0

我不明白爲什麼會有限制。這兩個東西 - 基本上把它變成'select count(*)from employees where name in(....)' – tvanfosson

+0

這就是我不幸的限制。我知道你的感受,我想知道同樣的問題。 –