C# 列表分组或排序

C# 列表分组或排序,c#,arrays,list,sorting,xamarin.forms,C#,Arrays,List,Sorting,Xamarin.forms,我正在尝试使用Xamarin上的c#程序对列表进行分组 列表列表 样本数据为 解释列表(项目、dop、值) 杂货店2019年3月1日1000 衣服2019年3月4日250 杂货店2019年4月1日500 电影2018年3月2日550 衣服2019年5月2日550 我想按项目名称对列表进行分组,并需要计算其总值。即 将列表分组 杂货店2019年3月1日1000 杂货店2019年4月1日500 衣服2019年3月4日250 衣服2019年5月2日550 电影2018年3月2日550 计算 我想要一些

我正在尝试使用Xamarin上的c#程序对列表进行分组

列表列表
样本数据为
解释列表(项目、dop、值)

杂货店2019年3月1日1000
衣服2019年3月4日250
杂货店2019年4月1日500
电影2018年3月2日550
衣服2019年5月2日550

我想按项目名称对列表进行分组,并需要计算其总值。即
将列表分组
杂货店2019年3月1日1000
杂货店2019年4月1日500
衣服2019年3月4日250
衣服2019年5月2日550
电影2018年3月2日550

计算
我想要一些关于组的信息,如下所示
团体项目总数为3个
杂货店数量乘以2,价值为1500
衣服数量乘以2,数值为800

电影数乘以1,值为550

参考以下代码

public class People
{
    public string Name { get; set; }
    public string Date { get; set; }
    public double Value { get; set; }
}


List<People> peopleList = new List<People>()
        {
            new People { Name="grocery ",Date="01/03/2019",Value=1000 },
            new People { Name="clothes ",Date="02/03/2019",Value=250 },
            new People { Name="grocery ",Date="04/03/2019",Value=500 },
            new People { Name="clothes ",Date="01/02/2019",Value=550 },
            new People { Name="movie ",Date="03/03/2019",Value=550 },

        };


var groupList = peopleList.GroupBy(x => x.Name).Select(x => new { name = x.Key,Total=x.Sum(y=>y.Value),Num=x.Distinct().Count() }).Distinct().ToList();

Console.WriteLine("Total group Items is "+groupList.Count() );

foreach(var item in groupList)
{
  Console.WriteLine(item.name + " Number of times "+ item.Num + " and Value is " + item.Total);
}
公共阶层人士
{
公共字符串名称{get;set;}
公共字符串日期{get;set;}
公共双值{get;set;}
}
List peopleList=新列表()
{
新人{Name=“杂货店”,Date=“01/03/2019”,Value=1000},
新人{Name=“cloth”,Date=“2019年3月2日”,Value=250},
新人{Name=“杂货店”,Date=“04/03/2019”,Value=500},
新人{Name=“cloth”,Date=“01/02/2019”,Value=550},
新人{Name=“movie”,Date=“03/03/2019”,Value=550},
};
var groupList=peopleList.GroupBy(x=>x.Name).Select(x=>new{Name=x.Key,Total=x.Sum(y=>y.Value),Num=x.Distinct().Count()}).Distinct().ToList();
Console.WriteLine(“组项目总数为”+groupList.Count());
foreach(组列表中的变量项)
{
Console.WriteLine(item.name+“次数”+item.Num+,值为“+item.Total”);
}

list.GroupBy(x=>x.Item)。选择(x=>new{Item=x.Key,Total=x.Sum(y=>y.Value.Value)})这已经有很好的文档记录: