给定一个带有日期和小数的对象列表,我想按日期的年,月,日和小时索引这些对象。在.NET 2.0中,我会使用一组嵌套字典和一个列表作为叶节点创建此图。我对LINQ如何做到这一点很感兴趣。
答案 0 :(得分:1)
你的意思是这样吗?
var grouping = from item in myList
group item by new { item.Date.Year, item.Date.Month, item.Date.DayOfWeek, item.Date.Hour }
into groupedItems
select groupedItems;
答案 1 :(得分:1)
假设你有一个带有DateTime和Decimal属性的类......
public class SomeThingWithDateAndDecimal
{
public DateTime SomeDate { get; set; }
public decimal SomeDecimal { get;set; }
}
如果我是你,我会为你的钥匙创建一个课程......
public class IndexKey
{
public int Year { get; set; }
public int Month { get; set; }
public DayOfWeek DayOfWeek { get; set; }
public int Hour { get; set; }
public IndexKey(DateTime dt)
{
Year = dt.Year;
Month = dt.Month;
DayOfWeek = dt.DayOfWeek;
Hour = dt.Hour;
}
然后从你的列表中做这样的事情......
public static void Main()
{
var l = new List<SomeThingWithDate>();
//Fill the list with stuff...
var indexed = l.ToLookup(o => new IndexKey(o.SomeDate));
}
这不是嵌套的,但你可以用嵌套字典做任何事情,你可以用这个结构做。使用嵌套字典很难做到的一些事情变得更简单,例如部分键查找,即“使用Hour == 2获取所有值”。