【问题标题】:LINQ select data for a chart, order by month in ASP .NET CoreLINQ 为图表选择数据,在 ASP .NET Core 中按月排序
【发布时间】:2021-07-19 09:58:16
【问题描述】:

我的 Web 应用程序中有一个使用 ASP .NET Core 编写的图表,它显示来自数据库表的数据。 图表应按月显示当年的月度数据(即 07.2020 至 07.2021),但如您所见,图表中的月份顺序不正确: 我使用 LINQ 从数据库中选择数据,如何以正确的顺序在图表中显示月份(jan -> feb -> mar 等)?我尝试了以下代码,但它不起作用:

var date = _azdb.kipKtg.Where(k => k.dtMonth.Value.Year.Equals(DateTime.Now.Year) ||
 k.dtMonth.Value.Year.Equals(DateTime.Now.Year - 1))
.Select(k => k.dtMonth)
.OrderBy(k => DateTime.Now.Month)
.Distinct()
.ToList();

【问题讨论】:

  • 您根本没有订购...因为您按当前月份的常数值订购
  • 还使用了明显的臭味……非常糟糕
  • @Selvin,你能详细说明一下为什么这里的 distinct 使用不正确吗?
  • 您能详细说明一下为什么需要它吗? ...我见过许多 DISTINCT 用法,几乎所有用法都没有必要且容易出错(fx distinct 而不是 group by或不同,因为有人加入一对多而不是EXISTS

标签: c# linq asp.net-core


【解决方案1】:

你应该试试.OrderBy(k => k.Month),而不是.OrderBy(k => DateTime.Now.Month)

另请注意,您必须在致电OrderBy 之前执行Distinct,以免弄乱订单。

【讨论】:

  • 肯定忘了,你必须在OrderBy之前使用Distinct,刚刚更新了答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多