[英]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.