【发布时间】:2020-02-03 14:01:10
【问题描述】:
我正在使用 Vue 创建一个网站页面,但由于 C#-JS 交叉,我遇到了数据解析问题。
其中一个 C# 后端文件从数据库接收作业数据:
IEnumerable<JobClasses> jobs = await dbContext.JobClasses.Where(x => x.CaseId == caseID).ToListAsync();
解析成对应的对象:
public JobClasses
{
public string ClassName { get; set; }
public string PayrollName { get; set; }
public int ID { get; set; }
}
反过来,其中一些字段将被提取到更大的类中:
public Company
{
public string Name { get; set; }
public string Title { get; set; }
public Data Data { get; set; }
public object[] JobClass { get; set; }
}
我需要Company 中的JobClass 来保存多个ClassName-PayrollName 对,以便稍后在我的Company 的详细信息页面上显示它们。由于每个Company 都有很多JobClasses,我不确定要使用什么对象。
我考虑过使用JobDetail 数组,其中JobDetail 包含ClassName 和PayrollName,如下所示:
JobDetail[] jobsDetails = jobs.Select(x => x.ClassName, x.PayrollName);
但尽管进行了很多谷歌搜索和语法摆弄,我还是找不到让它工作的方法。
我也试过
var jobArray = from j in jobs select new { j.ClassName, j.PayrollName };
因为 IEnumerable 在 JavaScript 中不存在,所以后来出现错误。
我的问题是:从 LINQ 查询接收数据对的理想方式是什么,以便它们可以顺利地通过 C# 传递到 JavaScript 中,而无需稍后进行任何额外的解析?
【问题讨论】:
-
可以添加一些测试用例吗?
-
@aloisdgmovingtocodidact.com 什么样的测试用例?如,数据示例?
-
输入/输出示例主要是:en.wikipedia.org/wiki/Test_case
-
你如何序列化这个以传递给 JavaScript?因为 yes IEnumerable 不存在,但您将传入与数据等效的 something。大概是物化的集合。那么这只是序列化如何完成的问题 - 我希望将 IEnumerable 转换为 List/array,然后将其转换为 JS 将识别为数组的东西。
-
我认为您在这里陷入困境......数据将以您在 C# 中拥有的结构发送到 JavaScript。然后,您可以在 JavaScript 中随心所欲地操作它。您不会收到错误,因为 JavaScript 中不存在
IEnumerable; C# 不知道关于 JavaScript 的深蹲。不过,C# 很乐意将IEnumerable转换为 JSON 中的数组语法。您只想展平您的对象模型吗?
标签: javascript c# linq vue.js parsing