MyDaftQuestions
MyDaftQuestions

Reputation: 4691

Failing to query from database

I'm trying to get a count of occurrences of a value from my database. It's failing.

My effort is

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

This keeps throwing the following exception

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

If I change select new... to select d then it works fine so I know that part of the query is OK.

I don't understand why I can't get a Count of each string it finds. What did I do wrong?

edit

If my database is

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

I'm hoping to get the result of

my value, 2
my other value, 1

Upvotes: 2

Views: 200

Answers (2)

ocuenca
ocuenca

Reputation: 39326

You need to group by then:

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

Upvotes: 3

Cristian Szpisjak
Cristian Szpisjak

Reputation: 2469

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

or

var items = (from item in dc.Instruments
             where item.Src.ToLower().Contains("other.png")
             select item).Count();

Upvotes: 0

Related Questions