如何使用Linq按日期对列表列表进行分组? [英] How to group a list of lists by date using Linq?

查看:305
本文介绍了如何使用Linq按日期对列表列表进行分组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的类结构的简化版本:

Here is a simplified version of my class structure:

public class TransferObject
{
    public List<Event> events { get; set; }

    public TransferObject()
    {
        events = new List<Event>();
    }
}

public class Event
{
    public List<Data> eventData { get; set; }

    public Event()
    {
        eventData = new List<Data>();
    }
}

public class Data
{
    public int someData {get; set;}
    public DateTime date { get; set; }
}

我想做的是获取eventData列表中的所有Data对象,并将它们放入由date分组的列表的新分组列表中.

What I want to do is take all the Data objects in the eventData lists and put them in a new grouped list of lists that's grouped by date.

我曾考虑过将所有Data对象放入一个临时列表中,然后将该列表与Linq分组,但是我想知道是否还有一种更优雅的方法可以不使用临时列表.

I thought about putting all the Data objects into a temporary list and then grouping that list with Linq but I'd like to know if there's a more elegant way to do it without using a temporary list.

推荐答案

如果我了解您的要求,则应该可以执行以下操作:

If I understand what you want, something like this should work:

var results = 
    from e in transferObject.events
    from d in e.eventData
    group d by d.date;

或使用流利的语法:

var results = transferObject.events
    .SelectMany(e => e.eventData)
    .GroupBy(d => d.date);

这篇关于如何使用Linq按日期对列表列表进行分组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆