我正在尝试制作图表。
这有效:
@model List<MyApp.Models.SystemModel>
@{var myChart = new Chart(width: 600, height: 400)
.AddTitle("Chart Title")
.AddSeries(
name: "Employee",
xValue: Model[0].HistoryValues.Select(x => x.LastUpdateSTR).ToArray(),
yValues: Model[0].
HistoryValues.Select(x => x.ServerPerformance).ToArray())
.Write();
}
但是我不想继续使用Model [0]我想继续我列表中的每个模型对象。
我试过这个:
@model List<MyApp.Models.SystemModel>
<div id="Chart col-md-6">
@{ var myChart = new Chart(width: 600, height: 400)
.AddTitle("ServerPerformance")
.AddSeries(
name: "ServerPerformance",
xValue: Model.Select(y => y.HistoryValues.Select(x => x.LastUpdateSTR)).ToArray(),
yValues: Model.Select(y => y.HistoryValues.Select(x => x.ServerPerformance)).ToArray()
)
.Write();
}
</div>
但是这给了一个outOfrangeException:
数据点绑定错误。此数据只能设置1个Y值 系列
我很清楚我的linq代码不正确,我尝试过使用其他方法作为.foreach(),但这给了我更大的麻烦。
我该怎么做?
编辑:
我在我的控制器中尝试了这个。
var myChart = new Chart(width: 600, height: 400)
.AddTitle("ServerPerformance")
.AddSeries(
name: "ServerPerformance",
xValue: model.Select(y => y.HistoryValues.Select(x => x.LastUpdateSTR)).ToArray(),
yValues: model.Select(y => y.HistoryValues.Select(x => x.ServerPerformance)).ToArray());
X和Y值为空。
MODEL:
public string GuidId { get; set; }
public bool EverythingOffline { get; set; }
public bool ServerOnline { get; set; }
public long ServerPerformance { get; set; }
public string DomainName { get; set; }
public string Url { get; set; }
public string ErrorMessage { get; set; }
public long DomainId { get; set; }
public Guid Id { get; set; }
public bool DatabaseOnline { get; set; }
public bool Passed { get; set; }
public long Databaseperformance { get; set; }
public DateTime LastUpdate { get; set; }
public string LastUpdateSTR { get; set; }
public long SoldTicketsLastUpdate { get; set; }
public long SoldTicketsLastThirtyMin { get; set; }
public long SoldTicketsLastFifteenMin { get; set; }
public DateTime LastUpdateDate { get; set; }
public double LastUpdateDateMinutes { get; set; }
public DateTime SoldTitcketsDate { get; set; }
public List<SystemModel> HistoryValues { get; set; }
答案 0 :(得分:1)
如果您的模型是一个列表,并且此列表的每个元素都有列表HistoryValues,您应该能够通过此代码选择所有值
xValue: model.SelectMany(y => y.HistoryValues).Select(x => x.LastUpdateSTR).ToArray(),
yValues: model.SelectMany(y => y.HistoryValues).Select(x => x.ServerPerformance).ToArray()