Datatable
のすべての列に対して、プログラムでCharting(SciChart)に使用するXyDataSeries
を作成しようとしています。私はこれを行う必要があります。なぜなら、列と名前の量はあらかじめわかっていないからです。C#プログラミングによるxyseriesの作成
任意の系列について、xの値は常に0から増分する整数になり、yの値は列の値になります。
IはDatatable
にExcelデータをインポートした後、列ヘッダは、以下によりList
の名前であるList
としてDictionary
に各列を通過しています。
dict = dt.Columns.Cast<DataColumn>().ToDictionary(c => c.ColumnName, c => dt.AsEnumerable().Select(r => r[c]).ToList());
私はのような何かをすることはできますか?
私は、列とその名前の量を知っていたと仮定して、私はすべての列/リストでこれを行うことができます。
手動でXyDataSeries
を作成し、値を追加するためのリストを反復処理します。私はグラフ(XAMLで定義されている)のchartseries.DataSeriesをそれぞれXyDataSeries
に設定します。
var list = dict["ListName"];
XyDataSeries<double, double> xyseries;
xyseries = new XyDataSeries<double, double>() { SeriesName = "ListName" };
foreach (var i in list)
{
double x = 1;
var d = Convert.ToDouble(i);
xyseries.Append(x++, d);
}
chartseries.DataSeries = xyseries;
また、XAMLでシリーズを宣言する必要があります。これを回避することはできますか?
これを600回以上実行することは理想的なものではありませんが、私はこのためのエレガントな解決策には本当に切望しています。
さらに詳しい情報を提供できる場合は、私にお知らせください。ありがとう
あなたは辞書を反復することができます: 'foreach(var keyValuePair in dict){var list = keyValuePair.Value; ...} ' – ASh
こんにちは、私は私が辞書を繰り返し処理できると考えていました。実際に知りたいのは、どのようにして' Dictionary> 'を作成して、 XyDataSeriesを返しますか?それらをすべて手動で設定する必要はありません。 –
User9123