2017-04-11 6 views
2

Ich versuche, eine Anzahl von Vorkommen eines Werts aus meiner Datenbank zu erhalten. Es versagt.Fehler beim Abfragen von Datenbank

Meine Anstrengung ist

 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 
         } 
        ); 

Dies hält die folgende Ausnahme werfen

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

Wenn ich select new... ändern select d dann funktioniert es gut, so weiß ich, dass ein Teil der Abfrage ist OK.

Ich verstehe nicht, warum ich keinen Count von jeder gefundenen Zeichenfolge erhalten kann. Was habe ich falsch gemacht?

bearbeiten

Wenn meine Datenbank

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

Ich hoffe, ich das Ergebnis der

my value, 2 
my other value, 1 
+0

Versuch 'd.Src.Length' statt – octavioccl

+0

Der' where' Teil werden alle Ihre Daten filtern, und Sie werden nur mit 'other.png' so eine bleiben einfaches 'Count' am Ende funktioniert. Warum brauchen Sie die 'Gruppe'? –

+0

Es ist nicht klar, was Sie zu zählen versuchen. Der aktuelle Code versucht (erfolglos), die Anzahl der Zeichen im 'Src'-Feld zu erhalten, die dem Filter entsprechen. –

Antwort

3

Sie müssen Gruppe dann:

 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

Ich suche nicht nach der Länge einer Zeichenfolge, sondern nach der Zeit, in der die Zeichenfolge in der Datenbank auftritt. Ich werde meinen Beitrag als deutlich schlecht geschrieben – MyDaftQuestions

+0

@MyDaftQuestions, ich habe meine Antwort aktualisiert – octavioccl

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

oder

zu erhalten 0
Verwandte Themen