我有一个日期列表,我希望每年检索每个第一个现有项目.问题是它并不总是包含1月1日的项目.下面的代码可以获取所有内容,但是如果缺少一天,则不会显示整年.
foreach (var index in pModel.IndexData)
{
if (index.Date.ConvertToDateTime().Day == 02 && index.Date.ConvertToDateTime().Month == 01)
{
yearlyIndex.Add(index);
}
}
Run Code Online (Sandbox Code Playgroud)
日期的外观示例.
我怎么能这样做我总是得到正确的项目?在这个例子中,我总是想得到row1和row3.我可以使用一堆if语句创建一个循环并添加几个月和几年但我想用linq或lambda处理这个问题.
GroupBy()
多年来,每年订购并挑选最旧的商品.
List<DateTime> result = input.GroupBy(x => x.Year)
.Select(x => x.OrderBy(y => y).First()).ToList();
Run Code Online (Sandbox Code Playgroud)
示例:https://dotnetfiddle.net/As0FBI