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

如何从结果集中提取值以便使用它们?

4

3 回答 3

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

这仅在 LINQ 查询所在的同一方法内有效,因为编译器只有在那时才知道new { }在您的 LINQ 中使用的匿名对象类型 ( ) 中哪些属性可用select

如果您将 LINQ 查询返回给调用方法,并且您想以上面显示的方式访问它,则必须定义一个显式类型并在您的 LINQ 查询中使用它:

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

...

return from ... in ...
       ...
       select new NameCountType
              {
                  Name = ...,
                  Count = ...,
              };
于 2010-08-30T14:34:44.627 回答
0

例如:

foreach (var x in result)
{
   Console.WriteLine(x.c.Name);
}
于 2010-08-30T14:37:01.820 回答
0
 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();
于 2014-02-04T05:32:48.283 回答