如何根据c#中的值拆分数据
Posted
技术标签:
【中文标题】如何根据c#中的值拆分数据【英文标题】:How to split data depending on the values in c# 【发布时间】:2021-11-30 02:15:52 【问题描述】:在我的项目(Angular 和 .net)中,有一个功能可以下载特定学生所学课程的详细信息。下载报告后,报告将显示在 Excel 表中,如下表所示。
在我的提供程序类的后端代码(web api)中,此下载的相关方法如下。
public async Task<students> GetReport(string sId)
var response = await dbAccess.GetCoursesForReport(sId);
return studentReportMapper.Map(response);
我收到的回复是上表中的值。
我想知道的是如何修改上述方法以拆分课程取决于 完成的级别(级别1,级别2,级别3)。因为我想下载报告时,根据已完成的级别在单独的 Excel 工作表中显示详细信息。(在上述情况下,三个不同的工作表分别命名为 level1、level2 和 level3)现在报告正在单个工作表中下载.
【问题讨论】:
你能改一下这个问题吗?我不确定你在问什么?您可以传递一个参数,以按完成的级别进行过滤。或者,您可以返回按已完成级别分组的学生列表。也可以提供students
的型号吗?
@Greg 我已经实现了模型。报告在单个excel表中下载为上表。该功能正常工作。我想要做的是修改上面提到的功能从已完成的级别拆分。(因为如果学生只是单击下载按钮,它将按上表下载,如果用户单击拆分报告版本的复选框,则必须根据每个报告在 3 个工作表中下载报告级别)
GroupBy 已完成关卡?
类似dotnetfiddle.net/XZWphf?
@rissa dotnetfiddle.net/AVfnQO 简化了一些事情
【参考方案1】:
您可以使用 LINQ 轻松做到这一点
var levelOne = result.Where(x => x.Level == 1).ToList();
var levelTwo = result.Where(x => x.Level == 2).ToList();
var levelThree = result.Where(x => x.Level == 3).ToList();
现在,您必须使用列表构建您的响应,仅此而已。
【讨论】:
以上是关于如何根据c#中的值拆分数据的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Razor 视图引擎在 JavaScript 中正确混合 C# 代码。我希望根据 ViewBag 中的值包含或省略 Javascript