3
我有一个C#DataTable,里面有5列。我只关心DataTable中的两列。我关心的两列称为“CreateDate”和“ID”。它们是DateTime和字符串。 DateTime表示票据提交的日期。该ID唯一代表一张票。用LINQ查询分组数据
我想写一个LINQ语句,显示每个日期创建的票数。但是,我无法弄清楚这是如何做到的。有人可以告诉我如何做到这一点?
谢谢!
我有一个C#DataTable,里面有5列。我只关心DataTable中的两列。我关心的两列称为“CreateDate”和“ID”。它们是DateTime和字符串。 DateTime表示票据提交的日期。该ID唯一代表一张票。用LINQ查询分组数据
我想写一个LINQ语句,显示每个日期创建的票数。但是,我无法弄清楚这是如何做到的。有人可以告诉我如何做到这一点?
谢谢!
我相信这样的事情会工作:
var result = from ticket in TicketTable
group ticket by ticket.CreateDate.Date into g
select new {Date = g.Key, Count = g.Count() };
class Program
{
static void Main(string[] args)
{
List<Ticket> tickets = new List<Ticket>();
tickets.Add(new Ticket() { CreateDate = DateTime.Now, Id = 1 });
tickets.Add(new Ticket() { CreateDate = DateTime.Now.AddDays(1), Id = 2 });
tickets.Add(new Ticket() { CreateDate = DateTime.Now.AddDays(1), Id = 3 });
tickets.Add(new Ticket() { CreateDate = DateTime.Now.AddDays(2), Id = 4 });
tickets.Add(new Ticket() { CreateDate = DateTime.Now.AddDays(2), Id = 5 });
tickets.Add(new Ticket() { CreateDate = DateTime.Now.AddDays(3), Id = 6 });
tickets.Add(new Ticket() { CreateDate = DateTime.Now.AddDays(3), Id = 7 });
tickets.Add(new Ticket() { CreateDate = DateTime.Now.AddDays(4), Id = 8 });
tickets.Add(new Ticket() { CreateDate = DateTime.Now.AddDays(5), Id = 9 });
tickets.Add(new Ticket() { CreateDate = DateTime.Now.AddDays(6), Id = 10 });
tickets.Add(new Ticket() { CreateDate = DateTime.Now.AddDays(7), Id = 11 });
var query = tickets.
GroupBy(t => t.CreateDate.Date).
Select(g => new { Date = g.Key, Count = g.Count() });
foreach (var g in query)
{
Console.WriteLine("{0} - {1}", g.Date, g.Count);
}
/* Outputs:
7/24/2010 12:00:00 AM - 1
7/25/2010 12:00:00 AM - 2
7/26/2010 12:00:00 AM - 2
7/27/2010 12:00:00 AM - 2
7/28/2010 12:00:00 AM - 1
7/29/2010 12:00:00 AM - 1
7/30/2010 12:00:00 AM - 1
7/31/2010 12:00:00 AM - 1 */
}
class Ticket
{
public int Id { get; set; }
public DateTime CreateDate { get; set; }
}
}
+1。正确的解决方案,假设'CreateDate'不包含确切的时间。 – 2010-07-24 21:05:29
CreateDate是一个完整的DateTime对象。这怎么解决? – user336786 2010-07-24 21:06:41
我的解决方案使用.Date 处理该问题http://msdn.microsoft.com/en-us/library/system.datetime.date.aspx – recursive 2010-07-24 21:09:37