【发布时间】:2021-12-02 20:09:02
【问题描述】:
我有一个包含 5 项的列表。 每个项目都包含 DateTime 字段和另一个字段。
我的目标是创建两个块,每个块都有各自的日期
在这种情况下,列表项中存在两个日期 -> 24/11 和 25/11。
我想按日期创建一个字典,每个日期都将包含该日期的项目。
这是代码:
namespace Test
{
public class CostDbDto
{
public DateTime Date { get; set; }
public decimal Cost { get; set; }
public int JobId { get; set; }
}
class Program
{
static void Main(string[] args)
{
try
{
List<CostDbDto> costList = new List<CostDbDto>();
costList.Add(new CostDbDto
{
Date = DateTime.Parse("2021-11-24 15:03:39"),
Cost = 3,
JobId = 111
});
costList.Add(new CostDbDto
{
Date = DateTime.Parse("2021-11-24 16:03:39"),
Cost = 55,
JobId = 111
});
costList.Add(new CostDbDto
{
Date = DateTime.Parse("2021-11-24 17:03:39"),
Cost = 22,
JobId = 111
});
costList.Add(new CostDbDto
{
Date = DateTime.Parse("2021-11-25 15:03:39"),
Cost = 44,
JobId = 111
});
costList.Add(new CostDbDto
{
Date = DateTime.Parse("2021-11-25 16:03:39"),
Cost = 33,
JobId = 111
});
var ss = costList.GroupBy(a => a.Date).ToList();
}
catch (Exception)
{
throw;
}
finally
{
Console.ReadLine();
}
}
}
}
希望我说的很清楚,感谢您的帮助。
【问题讨论】:
-
你试过什么?请不要只发布图片,发布实际代码。
-
你可能想使用
LookUp,var lookUp = list.ToLookUp(item => item.Key); -
你说得对,我编辑并插入了代码。我试过你的代码,但对我不起作用。你能再检查一次吗?
-
但是你所有的日期时间都是不同的,所以有 5 组,每组大小为 1。如果您不理解,请将它们视为数字:1.1、1.2、1.5、2.5、2.7。 Group by
theNumber意味着你有 5 个组,因为所有的数字都不一样。我认为您想要GroupBy(x=>x.Date.Date)- 不幸的是您的属性被称为Date,因为 DateTime 也有一个称为Date的属性,它删除了时间部分。如果您将public DateTime Date { get; set; }称为public DateTime CostDate { get; set; },那么GroupBy(x=>x.CostDate.Date)就不那么容易混淆了 -
重新阅读我的评论;如果有不明白的部分,请告诉我。不要打电话给你的财产
Date;这很令人困惑,因为您必须调用GroupBy(x=>x.Date.Date)- 第一个Date是您在 CostDbDto 中的 DateTime 属性,第二个Date是Dateproperty of a DateTime
标签: c# list dictionary