sql - 计数、排序 desc 并选择 ASP.NET 的前 4 个值
问题描述
我正在尝试为我的 .NET 应用程序创建一个显示我的数据库中前 4 个国籍的表。我可以在 this 之后使用 SQL 来做到这一点。
这是sql中的结果
但是,我的应用程序需要的是
我曾尝试在视图中使用 LINQ 和 var 但无法获得它。我看到了这个并尝试了以下但不太明白
员工模型
public class employees
{
public int eeID { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string Nationality { get; set; }
}
解决方案
你可以做以下事情
- 存储按计数排序的分组民族
- 获得最佳结果,使用
Enumerable.Take
- 获取不应该包括最高记录的其他民族的计数,为此,您可以使用
Enumerable.Skip
- 第 2 点和第 3 点的 Concat 结果。
- 将最终输出传递给视图。
示例代码。请参阅此链接以获取工作代码
// Your Logic
var topRecordsCount = 4;
var groupedResult = list
.GroupBy(x => x.Nationality)
.OrderByDescending(x => x.Count());
var topRecords = groupedResult
.Take(topRecordsCount)
.Select(x => new FinalResult {Nationality = x.Key, Total = x.Count()}).ToList();
var othersCount = groupedResult.Skip(topRecordsCount).Select(x => x.Count()).Sum();
var othersRecord = new FinalResult { Nationality = "Others", Total = othersCount};
topRecords.Add(othersRecord);
foreach(var top in topRecords)
Console.WriteLine(top.Nationality + " - " + top.Total);
// model to store the final output
public class FinalResult {
public string Nationality { get; set; }
public int Total { get; set; }
}
推荐阅读
- php - 防止表单验证回调问题 Codeigniter
- php - 如何保持 $_get['id']
- php - 如何使用一个php页面处理多个php表单
- mysql - 从mysql中具有不同指针的多表中计数
- python - 访问变量时,python可以“按需”从文件中加载数据吗?
- swift - 向 Base64 字符串添加填充的 Swift 将返回较小的字符串
- wordpress - 如何在使用 WPForms 提交时不清除表单
- css - React Native Image 未以 View 为中心
- javascript - 未定义的 ERROR javascript 值,中间有空格
- reactjs - 我想学习如何使用 populate() 和 aggregate()