[英]Linq : How to sorting by date strine values in IQueryable .Net6?
我有一个存储用户的表,我想按日期显示它们,日期存储为字符串。
Linq:
IQueryable<User> result = _context.Users
.AsQueryable()
.Include(r => r.Role)
.Include(u => u.UserDetail)
.Where(u => u.Role.RoleName != "Admin")
.OrderByDescending(u => DateTime.Parse(u.UserDetail.RegisterDate));
我用了上面的代码但是没有显示排序,?! 我也检查了以下链接,但我的问题没有解决? 按 LINQ 中的字符串值对 IQueryable 日期列进行排序
您可以尝试使用 TryParse,这是一种比“ParseExact”更宽容的方法
if (DateTime.TryParse(result.UserDetail.RegisterDate, out registerDate))
{
result = result.OrderByDescending(u => registerDate);
}
或者,您可以像这样使用 ParseExact;
try
{
result = result.OrderByDescending(u =>
DateTime.ParseExact(u.UserDetail.RegisterDate, "yyyy-MM-dd",
CultureInfo.InvariantCulture));
}
catch (Exception ex)
{
}
请记住,ParseExact 非常严格,如果您没有提供完全正确的输入,则可能会抛出 FormatException。 我建议将来尽可能将列的类型更改为 DateTime 而不是 String,因为这将使应用程序更易于维护,并且这样排序会更快。
要应用任何一种技术,只需像这样在末尾没有“OrderByDescending”的情况下做你正在做的事情;
IQueryable<User> result = _context.Users.AsQueryable().Include(r=>
r.Role).Include(u => u.UserDetail).Where(u=> u.Role.RoleName !=
"Admin");
然后应用任何一种技术。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.