这个问题实际上正在继续/扩展我的问题here。
我有模型SchoolTestsPerModulePerStudent,实际上是以下
public partial class SchoolTestsPerModulePerStudent
{
public long StudentID { get; set; }
public long ModuleID { get; set; }
public System.DateTime TestDate { get; set; }
public int TestResult { get; set; }
}
正如我在上一个问题中所提到的,我将此代码作为控制器的功能
var query = from b in db.SchoolTestsPerModulePerStudent
where b.StudentID.Equals(2)
select b;
return View(query.ToArray());
那么,现在,b获得StudentID为2的学生的所有SchoolTestsPerModulePerStudent记录。
我现在遇到的问题是,我想在两个不同的数组中拆分b,我想在javascript中将其用作数组。
所以现在我有两个问题:
是否可以将包含SchoolTestsPerModulePerStudent记录的数组分解为两个可以在视图中返回的记录?更具体地说,我希望第一个只包含TestDate,而第二个只包含TestResult。我找不到任何可用于仅从其他表的列创建数组的选项...
第二个是我如何只使用一个函数返回这两个新数组?可能吗?基本上,我想要避免的是第二次执行查询(延迟),以及如果我执行两个查询来获取每个表的情况,有可能存在元素将是的情况返回使用不同的顺序,因此两个数组不匹配。
另外在javascript中,在我之前的问题中,我得到了作为数组返回的答案,它们应该像@Json.Encode(Model)
那样以JSON形式返回。我可以在我的案例中使用@Json.Encode(TestDatesArray)
和@Json.Encode(TestResultsArray)
吗?
答案 0 :(得分:2)
吉姆,
通过创建另一个模型类,您可以毫无问题地执行此操作,并从查询结果中选择数据到数组。现在我按照你的说法假设你只希望两个属性TestDate
和TestResult
没有特定的选择顺序而没有任何其他属性。
<强>型号:强>
public partial class SchoolTestResultsModel
{
public int[] TestResults { get; set; }
public DateTime[] TestDates { get;set; }
}
改编方法:
var query = from b in db.SchoolTestsPerModulePerStudent
where b.StudentID.Equals(2)
select b;
var model = new SchoolTestResultsModel();
model.TestDates = query.Select(x => x.TestDate).ToArray();
model.TestResults = query.Select(x => x.TestResult).ToArray();
return View(model);
然后您的JSON编码可以
@Json.Encode(Model.TestResults)
@Json.Encode(Model.TestDates)
现在确保您的视图已设置为使用新模型。
@model SchoolTestResultsModel