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 に答える