delete
delete

Reputation:

How to extract results from a Linq query?

class Program
{
    static void Main(string[] args)
    {
        MyDatabaseEntities entities = new MyDatabaseEntities();

        var result = from c in entities.Categories
                        join p in entities.Products on c.ID equals p.IDCategory
                        group p by c.Name into g
                        select new
                        {
                            Name = g.Key,
                            Count = g.Count()
                        };

        Console.WriteLine(result.ToString());
        Console.ReadLine();
    }
}

How can I extract the values from ths result set so I can work with them?

Upvotes: 5

Views: 21452

Answers (3)

Syed Mohamed
Syed Mohamed

Reputation: 1379

 var results = (from myRow in ds.Tables[0].AsEnumerable()
                  where myRow.Field<String>("UserName") == "XXX"
                  select myRow).Distinct();
 foreach (DataRow dr in results)
    UserList += " , "+dr[0].ToString();

Upvotes: 0

foreach (var item in result)
{
    var name = item.Name;
    var count = item.Count;
    ...
}

This will only work inside the same method where the LINQ query is located, since the compiler will only then know which properties are available in the anonymous object type (new { }) used in your LINQ select.

If you return a LINQ query to a calling method, and you want to access it in the way shown above, you'd have to define an explicit type and use it in your LINQ query:

class NameCountType
{
    public string Name { get; set; }
    public int Count { get; set; }
}

...

return from ... in ...
       ...
       select new NameCountType
              {
                  Name = ...,
                  Count = ...,
              };

Upvotes: 11

0xAX
0xAX

Reputation: 21817

For example:

foreach (var x in result)
{
   Console.WriteLine(x.c.Name);
}

Upvotes: 0

Related Questions