c# - 比较 razor 上的两个列表并按最新排序(都已创建日期时间)
问题描述
我想按日期时间对两个模型进行排序,它们都进入一个时间线,因此我需要它们中的最新模型位于列表时间轴的开头,我找到了联合模型之类的解决方案,但我希望它们保留两个单独的列表。 。是否可以?
foreach (var list1 in model.list1.OrderByDescending(a => a.created_datetime))
{
09/18/19
}
foreach (var list2 in model.list2.OrderByDescending(a => a.created_datetime))
{
09/19/19
}
现在我希望将时间线结果列在第二个列表中,因为它是较早的结果
解决方案
这就是你的意思?(使用 Linq)
var merged = list1.Union(list2).OrderByDescending(d => d.Date);
请注意,这只有在两个列表类型相同时才有可能。其他注意,这将返回一个 IEnumerable,而不是一个新的 List,因此每次枚举它时,都会计算合并。如果你想创建一个新的 List 来防止这种情况,你必须在最后调用 ToList() ,但是如果你有很大的列表,这可能会在性能上非常不理想。
示例程序:
using System;
using System.Collections.Generic;
using System.Linq;
namespace Lists
{
class Program
{
static void Main(string[] args)
{
var list1 = new List<DateItem>
{
new DateItem{Date = DateTime.UtcNow.AddDays(-2), Name = "The day before yesterday" },
new DateItem{Date = DateTime.UtcNow.AddDays(1), Name = "Tomorrow" }
};
var list2 = new List<DateItem>
{
new DateItem{Date = DateTime.UtcNow.AddDays(2), Name = "The day after tomorrow" },
new DateItem{Date = DateTime.UtcNow.AddDays(-1), Name = "Yesterday" },
new DateItem{Date = DateTime.UtcNow, Name = "Today" }
};
var merged = list1.Union(list2).OrderByDescending(d => d.Date);
foreach (var day in merged)
{
Console.WriteLine(day.Name);
}
}
}
class DateItem
{
public DateTime Date { get; set; }
public string Name { get; set; }
}
}
推荐阅读
- java - Сan 无法从 ADFS 服务器获得 SAML 响应
- php - 如何在控制器 Codeigniter 中调用模态引导程序?
- c# - ASP.NET Core SignalR 使用 Azure AD 返回 401 Unauthorized
- apache-kafka - 按键分组 Ktable 后时间戳无效(负)
- postgresql - 如何在 postgresql 存储函数中从 jsonb 返回表?
- javascript - 仅当详细信息表不为空时,如何显示图标以展开详细信息表
- vue.js - 范围内的样式时未应用 Vuetify 样式
- javascript - 根据当前旋转顺时针或逆时针旋转 div
- node.js - react-scripts 构建“第 1 行解析错误”
- python - pandas.DataFrame.to_csv:按列选择性地应用 date_format