2017-04-11 82 views
2

我試圖從我的數據庫中得到一個值的出現次數。這是失敗的。無法從數據庫查詢

我的努力是

 var dc = new Dal.Entities(); 
     var query = (from d in dc.Instruments 
         where d.Src.ToLower().Contains("other.png") 
         select new 
         { 
          count = d.Src.Count(), 
          key = d.Src 
         } 
        ); 

這不斷拋出以下異常

"DbExpressionBinding requires an input expression with a collection ResultType.\r\nParameter name: input" 

如果我改變select new...select d然後正常工作,所以我知道查詢的那部分就可以了。

我不明白爲什麼我無法得到它找到的每個字符串的計數。我做錯了什麼?

編輯

如果我的數據庫是

Src (column title) 
my value 
my other value 
my value 

我希望能得到

my value, 2 
my other value, 1 
+0

嘗試'd.Src.Length'代替 – octavioccl

+0

的'where'部分會過濾所有的數據,你會依然只與'other.png'所以簡單的'計數'在最後將起作用。爲什麼需要「組」? –

+0

目前尚不清楚你想要計算什麼。當前代碼嘗試(不成功)獲取與過濾器匹配的'Src'字段中的字符數。 –

回答

3

你需要按則:

 var query = from d in dc.Instruments 
        where d.Src.ToLower().Contains("other.png") 
        group d by d.Src into g 
        select new 
        { 
         count = g.Count(), 
         key = g.Key 
        }; 
+0

我不是在尋找字符串的長度,而是在數據庫中出現字符串的時間。我會以我的帖子清楚地寫下我的帖子 – MyDaftQuestions

+0

@MyDaftQuestions,我已經更新了我的回答 – octavioccl

0
var items = dc.Instruments 
    .Where(p => p.Src.ToLower().Contains("other.png")) 
    .Count(); 

結果0