Как извлечь результаты из запроса Linq?

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

Как я могу извлечь значения из набора результатов, чтобы я мог работать с ними?

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

Это будет работать только в том же методе, где находится запрос LINQ, поскольку компилятор только тогда узнает, какие свойства доступны в типе анонимного объекта ( new { } ), который используется в вашем select LINQ.

Если вы возвращаете запрос LINQ к вызывающему методу и хотите получить к нему доступ так, как показано выше, вам нужно будет определить явный тип и использовать его в запросе LINQ:

 class NameCountType { public string Name { get; set; } public int Count { get; set; } } ... return from ... in ... ... select new NameCountType { Name = ..., Count = ..., }; 

Например:

 foreach (var x in result) { Console.WriteLine(xcName); } 
  var results = (from myRow in ds.Tables[0].AsEnumerable() where myRow.Field("UserName") == "XXX" select myRow).Distinct(); foreach (DataRow dr in results) UserList += " , "+dr[0].ToString();