我正在嘗試使用 LiveCharts 庫在圖表中可視化資料庫中的資料。我設法讓其中一些作業正常。但是我在使用 PieCharts 時遇到了困難。我想簡單地在兩個切片中顯示資料。為此,我在 DB 中有名為 AppIsRunning 的列。
我做了一個簡單的例子,它作業正常并按預期在切片中顯示資料:
List<DataModel> records = new List<DataModel>();
records.Add(new DataModel { Id = 1, Revenue = 43, Name = "Item 1", AppIsRunning = true });
records.Add(new DataModel { Id = 2, Revenue = 23, Name = "Item 2", AppIsRunning = true });
records.Add(new DataModel { Id = 3, Revenue = 13, Name = "Item 3", AppIsRunning = true });
records.Add(new DataModel { Id = 4, Revenue = 87, Name = "Item 4", AppIsRunning = true });
records.Add(new DataModel { Id = 5, Revenue = 23, Name = "Item 5", AppIsRunning = true });
IEnumerable<ISeries> result1 = records.Select(x =>
new PieSeries<double>
{
Values = new List<double> { x.Revenue },
Name = x.Name,
});

現在我想對資料進行分組以僅顯示 2 個切片 AppIsRunning true/false,并且對于 Values 有收入。所以我最終得到了這段代碼:
List<DataModel> records = new List<DataModel>();
records.Add(new DataModel { Id = 1, Revenue = 43, Name = "Item 1", AppIsRunning = true });
records.Add(new DataModel { Id = 2, Revenue = 23, Name = "Item 2", AppIsRunning = true });
records.Add(new DataModel { Id = 3, Revenue = 13, Name = "Item 3", AppIsRunning = false });
records.Add(new DataModel { Id = 4, Revenue = 87, Name = "Item 4", AppIsRunning = true });
records.Add(new DataModel { Id = 5, Revenue = 23, Name = "Item 5", AppIsRunning = true });
IEnumerable<ISeries> result1 = records
.GroupBy(g => g.AppIsRunning)
.Select(item => new PieSeries<double>
{
Values = item.Select(x => Convert.ToDouble(x.Revenue)),
Name = item.Key ? "Running" : "Not running",
});
然而,這使得 AppIsRunning true 部分分為 4 個子切片 = 4 AppIsRunning TRUE 值。請參閱藍色切片中包含 4 個子部分的螢屏截圖:

我的問題是如何擺脫這 4 個子部分并將這些資料分組為一個?我只需要 2 個切片,不需要將切片分成小節。
Here is original example from LiveCharts:
this.ActivityChartSeries = new ISeries[]
{
new PieSeries<double> { Values = new double[] { 2 }, Name = "Section 1"},
new PieSeries<double> { Values = new double[] { 21 }, Name = "Section 2"},
new PieSeries<double> { Values = new double[] { 28 }, Name = "Section 3"},
new PieSeries<double> { Values = new double[] { 2 }, Name = "Section 4"},
new PieSeries<double> { Values = new double[] { 52 }, Name = "Section 5"},
};
https://github.com/beto-rodriguez/LiveCharts2/blob/master/samples/ViewModelsSamples/Pies/Basic/ViewModel.cs
uj5u.com熱心網友回復:
從示例來看,您希望將總收入(總和)細分為每個狀態的單個值。為此,您可以這樣做:
IEnumerable<ISeries> result1 = records
.GroupBy(g => g.AppIsRunning)
.Select(item => new PieSeries<double>
{
Values = new List<double> {item.Sum(x => Convert.ToDouble(x.Revenue))},
Name = item.Key ? "Running" : "Not running",
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/454019.html
標籤:c# linq livecharts
