当前位置:  开发笔记 > 编程语言 > 正文

使用LINQ从List <Customers>中提取结果

如何解决《使用LINQ从List<Customers>中提取结果》经验,为你挑选了1个好方法。

我有一个客户列表

List cust = new List();
cust.Add(new Customers(){ID=1, Name="Sam", PurchaseDate=DateTime.Parse("01/12/2008")});
cust.Add(new Customers(){ID=2, Name="Lolly" PurchaseDate=DateTime.Parse("03/18/2008")});

我想显示2个单独的结果,如:

客户在Yr中购买//按年份分组并显示ID,名称
按客户购买年份 - 月份//按年份分组然后按月份和显示ID,名称

如果我想订购年份怎么办?

更新:

再补充一点.如果我在Customer类中有一个名为"Status"的字段,其中任何一个值为'Y','N','C'代表yes,no和取消我将如何创建一个查询以给出%的比率

Y - 20%N - 30%C - 50%



1> Jon Skeet..:

按年分组:

var groupByYear = customers.GroupBy(customer => customer.PurchaseDate.Year);

foreach (var group in groupByYear)
{
    Console.WriteLine("Year: {0}", group.Key);
    foreach (var customer in group)
    {
        Console.WriteLine("{0}: {1}", customer.ID, customer.Name);
    }
}

按年和月分组:

var groupByYearMonth = customers.GroupBy(customer => 
     new DateTime(customer.PurchaseDate.Year, customer.PurchaseDate.Month, 1));
foreach (var group in groupByYear)
{
    Console.WriteLine("Year/month: {0}/{1}", group.Key.Year, group.Key.Month);
    foreach (var customer in group)
    {
        Console.WriteLine("{0}: {1}", customer.ID, customer.Name);
    }
}

排序:

var ordered = customers.OrderBy(customer => customer.PurchaseDate.Year);

所有这些都使用"点符号"而不是查询表达式,因为它们非常简单 - 但如果您愿意,可以使用查询表达式.

编辑:对于状态部分,只需使用David B的答案.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有