2016-04-01 14 views
0

我想製作一個圖表。如何正確地爲linq指定數組值?

這工作:

@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(); 
    } 

但是我不想去研究[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

試試這個'Model.HistoryValues.Select(x => x.LastUpdateSTR).ToArray()' –

+2

爲什麼不把邏輯移動到控制器中,在那裏建立數組的列表並將它們賦值給模型屬性,然後通過簡單地說一些簡單的東西來使用它作爲Model.xV alues和Model.yValues –

+0

@Kartikeya Khosla模型是我的模型對象的列表檢查編輯 – ThunD3eR

回答

1

如果你的模型是一個列表,該列表中的每一個元素都有名單HistoryValues你應該能夠通過這個代碼,選擇所有值

xValue: model.SelectMany(y => y.HistoryValues).Select(x => x.LastUpdateSTR).ToArray(), 
yValues: model.SelectMany(y => y.HistoryValues).Select(x => x.ServerPerformance).ToArray()