這有點超出資料主題,但我一直很難弄清楚如何做到這一點。我有一個圖表控制元件,它為每個圖表部分使用顏色。我想為我的圖表指定恒定的顏色,這樣它們就不會隨機生成。
這是我的 linq 查詢:
private void PopulateChart()
{
IEnumerable<ISeries> result = this.DataRecords
.Where(w => w.TimeNow.Date == this.SelectedDate.Date)
.GroupBy(g => g.Running)
.Select(item => new PieSeries<double>
{
Values = new List<double> { item.Sum(x => x.Elapsed) },
Name = item.Key ? "On" : "Off",
Stroke = null,
Fill = new SolidColorPaint(SKColors.Yellow)
});
this.ChartSeries = new ObservableCollection<ISeries>(result);
}
現在我的顏色總是黃色 = SKColors.Yellow。我如何制作一系列顏色。例如SKColors.Yellow,SKColors.Blue然后在我的 Select 中使用它們為每個部分傳遞它們?
這是一個陣列示例:
private void PopulateChart()
{
SKColor[] colors = { SKColors.Yellow, SKColors.Blue };
IEnumerable<ISeries> result = this.DataRecords
.Where(w => w.TimeNow.Date == this.SelectedDate.Date)
.GroupBy(g => g.Running)
.Select(item => new PieSeries<double>
{
Values = new List<double> { item.Sum(x => x.Elapsed) },
Name = item.Key ? "On" : "Off",
Stroke = null,
Fill = new SolidColorPaint(colors[0])
});
this.ChartSeries = new ObservableCollection<ISeries>(result);
}
所以問題是如何傳遞 0 然后 1 in colors[0]?
uj5u.com熱心網友回復:
我們可以嘗試使用Select可以從當前迭代中傳遞索引號的多載方法
應用于每個源元素的變換函式;函式的第二個引數表示源元素的索引。
然后我們可以嘗試使用 mod( %) 通過索引號來確定一個是Yellow,另一個是Blue
IEnumerable<ISeries> result = this.DataRecords
.Where(w => w.TimeNow.Date == this.SelectedDate.Date)
.GroupBy(g => g.Running)
.Select((item,idx) => new PieSeries<double>
{
Values = new List<double> { item.Sum(x => x.Elapsed) },
Name = item.Key ? "On" : "Off",
Stroke = null,
Fill = new SolidColorPaint(colors[idx%2])
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/470017.html
