从 Linq 查询在 LiveCharts2 中构建饼图
Build PieChart in LiveCharts2 from Linq query
我正在尝试让 PieCharts 在我的 WPF 应用程序中可见。有一个可用的示例,它似乎工作正常。但是我正在尝试从 linq 查询中执行相同的操作,但无法理解如何求解该方程式。
这是一个例子:
Xaml 部分:
<lvc:PieChart x:Name="PieChart" LegendPosition="Right" Series="{Binding OnLoaded}" InitialRotation="-90"></lvc:PieChart>
和 C# 代码:
private async void OnLoaded()
{
IEnumerable<double> a = new List<double> { 1 };
IEnumerable<double> b = new List<double> { 0 };
IEnumerable<double> c = new List<double> { 0 };
IEnumerable<ISeries> Series = new List<ISeries>
{
new PieSeries<double> { Values = a, Name = "a" },
new PieSeries<double> { Values = b, Name = "b" },
new PieSeries<double> { Values = c, Name = "c" }
};
LivePieChart3.Series = Series;
}
}
然后我尝试从 linq 做同样的事情,但我认为这是完全错误的?:
private void InitializePieChart()
{
List<ISeries> projectNumbers = this.Projects.Select(x => new List<ISeries>
{
new PieSeries<double>
{
Values = x.Revenue,
Name = x.ProjectName,
}
});
this.Series = new ObservableCollection<ISeries>(projectNumbers);
}
如何在 new List<ISeries>
之后创建一个新的 new PieSeries<double>
?
这是我的模型:
public class ProjectModel
{
public Guid Id { get; set; }
public string ProjectName { get; set; }
public string ProjectNumber { get; set; }
public double Revenue { get; set; }
public DateTime CreationDate { get; set; }
public virtual ICollection<TaskModel> Tasks { get; set; }
}
ViewModel 中的项目:
private ObservableCollection<ProjectModel> projects;
public ObservableCollection<ProjectModel> Projects
{
get => this.projects;
set
{
this.projects = value;
this.OnPropertyChanged();
}
}
这是 LiveCharts2 项目:https://github.com/beto-rodriguez/LiveCharts2
编辑:
根据 Ash 在评论中的建议,我收到以下信息:
private void InitializePieChart()
{
IEnumerable<ISeries> projectNumbers = this.Projects.Select(x =>
new PieSeries<double>
{
Values = new List<double> { x.Revenue },
Name = x.ProjectName,
});
this.Series = new ObservableCollection<ISeries>(projectNumbers);
}
我正在尝试让 PieCharts 在我的 WPF 应用程序中可见。有一个可用的示例,它似乎工作正常。但是我正在尝试从 linq 查询中执行相同的操作,但无法理解如何求解该方程式。
这是一个例子:
Xaml 部分:
<lvc:PieChart x:Name="PieChart" LegendPosition="Right" Series="{Binding OnLoaded}" InitialRotation="-90"></lvc:PieChart>
和 C# 代码:
private async void OnLoaded()
{
IEnumerable<double> a = new List<double> { 1 };
IEnumerable<double> b = new List<double> { 0 };
IEnumerable<double> c = new List<double> { 0 };
IEnumerable<ISeries> Series = new List<ISeries>
{
new PieSeries<double> { Values = a, Name = "a" },
new PieSeries<double> { Values = b, Name = "b" },
new PieSeries<double> { Values = c, Name = "c" }
};
LivePieChart3.Series = Series;
}
}
然后我尝试从 linq 做同样的事情,但我认为这是完全错误的?:
private void InitializePieChart()
{
List<ISeries> projectNumbers = this.Projects.Select(x => new List<ISeries>
{
new PieSeries<double>
{
Values = x.Revenue,
Name = x.ProjectName,
}
});
this.Series = new ObservableCollection<ISeries>(projectNumbers);
}
如何在 new List<ISeries>
之后创建一个新的 new PieSeries<double>
?
这是我的模型:
public class ProjectModel
{
public Guid Id { get; set; }
public string ProjectName { get; set; }
public string ProjectNumber { get; set; }
public double Revenue { get; set; }
public DateTime CreationDate { get; set; }
public virtual ICollection<TaskModel> Tasks { get; set; }
}
ViewModel 中的项目:
private ObservableCollection<ProjectModel> projects;
public ObservableCollection<ProjectModel> Projects
{
get => this.projects;
set
{
this.projects = value;
this.OnPropertyChanged();
}
}
这是 LiveCharts2 项目:https://github.com/beto-rodriguez/LiveCharts2
编辑:
根据 Ash 在评论中的建议,我收到以下信息:
private void InitializePieChart()
{
IEnumerable<ISeries> projectNumbers = this.Projects.Select(x =>
new PieSeries<double>
{
Values = new List<double> { x.Revenue },
Name = x.ProjectName,
});
this.Series = new ObservableCollection<ISeries>(projectNumbers);
}