如何使用Linq按日期对列表列表进行分组? [英] How to group a list of lists by date using Linq?
本文介绍了如何使用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屋!
查看全文