当前位置: 代码迷 >> C# >> 请问一个LINQ语法
  详细解决方案

请问一个LINQ语法

热度:226   发布时间:2016-05-05 05:17:47.0
请教一个LINQ语法
本帖最后由 qq175265664 于 2015-01-06 14:11:13 编辑
有下面类


static void Main(string[] args)
        {
            List<dog> t1 = new List<dog>();
            dog d1 = new dog();
            d1.color = "红色";
            d1.name = "花1";
            d1.size = 30;

            dog d2 = new dog();
            d2.color = "红色";
            d2.name = "花2";
            d2.size = 20;

            dog d3 = new dog();
            d3.color = "黄色";
            d3.name = "花3";
            d3.size = 30;

            dog d4 = new dog();
            d4.color = "黑色";
            d4.name = "花4";
            d3.size = 30;
            ......
            t1.Add(d1);
            t1.Add(d2);
            t1.Add(d3);
            t1.Add(d4);
....


            
        }
    }
    class dog
    {
        public string name { get; set; }
        public string color { get; set; }
        public int size { get; set; }
    }


请教 用LINQ 语法计算出t1各种色的DOG有多少个?
------解决思路----------------------
以color分组,取Count
------解决思路----------------------

var temp = from p in t1
                       group p by p.color into g
                       select new
                       {
                           color = g.Key,
                           count = g.Count()
                       };

------解决思路----------------------
var query = from d in t1
                    group d by d.color into g
                    select g;
foreach(var g in query)
{
    Console.Write("{0}狗狗有{1}只",g,query[g])
}

------解决思路----------------------
引用:
var query = from d in t1
                    group d by d.color into g
                    select g;
foreach(var g in query)
{
    Console.Write("{0}狗狗有{1}只",g,query[g])
}


这里错了,应该是g.Count()
------解决思路----------------------
引用:

var temp = from p in t1
                       group p by p.color into g
                       select new
                       {
                           color = g.Key,
                           count = g.Count()
                       };

或者:

var temp1 = t1.GroupBy(p => p.color).Select(p => new
            {
                color = p.Key,
                count = p.Count()
            });
  相关解决方案