Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC 5-使用LINQ的Order by MAX()_C#_Asp.net Mvc_Linq_Max - Fatal编程技术网

C# MVC 5-使用LINQ的Order by MAX()

C# MVC 5-使用LINQ的Order by MAX(),c#,asp.net-mvc,linq,max,C#,Asp.net Mvc,Linq,Max,我有一个IQueryable LINQ声明,它返回了已查看的前5个最新报告。我目前有LINQ语句返回正确的列表,但如果有人多次查看报告,我不希望看到重复的报告。我相信我需要使用MAX()语法,但我不明白在我的LINQ语句中应该把它放在哪里。我一直在网上搜索,但我觉得我没有找到任何对我有意义的解决方案 数据库中前10条记录如下所示: 报告数量 20 20 20 12 12 5 5 5 7 四, 当我的LINQ语句运行时,它将返回以下内容: 报告数量 20 20 20 12 十二, 但我想让它把

我有一个IQueryable LINQ声明,它返回了已查看的前5个最新报告。我目前有LINQ语句返回正确的列表,但如果有人多次查看报告,我不希望看到重复的报告。我相信我需要使用MAX()语法,但我不明白在我的LINQ语句中应该把它放在哪里。我一直在网上搜索,但我觉得我没有找到任何对我有意义的解决方案

数据库中前10条记录如下所示:

报告数量


20
20
20
12
12
5
5
5
7
四,

当我的LINQ语句运行时,它将返回以下内容:

报告数量


20
20
20
12
十二,

但我想让它把这个还给我:

报告数量


20
12
5
7
四,

var QuickLinks=(System.Linq.IQueryable)null;
var sso=b.getSSO(User.Identity.Name);
快速链接=(从db.Report\u Completion\u状态中的r开始)
在db.Report\u Web\u使用中加入ru
关于r.Report_Num等于ru.Report_Num
其中ru.sso==sso
选择新建WebReportingToolDAL.Models.ViewModels.QuickLinksViewModel
{
报告名称=r.报告名称,
报告链接=r.report链接,
report\u num=r.report\u num,
点击日期=ru.hit\u date.Value
}).OrderByDescending(x=>x.hit_date).Take(5);

您需要按r分组,以便找到每个组的最大命中日期。值:

var QuickLinks = (from r in db.Report_Completion_Status
              join ru in db.Report_Web_Usage
              on r.Report_Num equals ru.report_num
              where ru.sso == sso
              group ru by new { r.Report_Name, r.Report_Link, r.Report_Num } into rug
              select new WebReportingToolDAL.Models.ViewModels.QuickLinksViewModel {
                  report_name = rug.Key.Report_Name,
                  report_link = rug.Key.Report_Link,
                  report_num = rug.Key.Report_Num,
                  hit_date = rug.Max(ru => ru.hit_date.Value)
              }).OrderByDescending(x => x.hit_date).Take(5);

看起来您可能需要使用Distinct?您是否希望获得最近的热门日期?谢谢您的快速回复@NetMage似乎回答了我的问题。非常感谢!网络法师-就是这样!非常感谢。
var QuickLinks = (from r in db.Report_Completion_Status
              join ru in db.Report_Web_Usage
              on r.Report_Num equals ru.report_num
              where ru.sso == sso
              group ru by new { r.Report_Name, r.Report_Link, r.Report_Num } into rug
              select new WebReportingToolDAL.Models.ViewModels.QuickLinksViewModel {
                  report_name = rug.Key.Report_Name,
                  report_link = rug.Key.Report_Link,
                  report_num = rug.Key.Report_Num,
                  hit_date = rug.Max(ru => ru.hit_date.Value)
              }).OrderByDescending(x => x.hit_date).Take(5);