如何设置一个值为KeyValuePair <long,long =“”>为图表wpf?</long,>

时间:2013-12-16 16:23:49

标签: c# wpf charts keyvaluepair

我需要从KeyValuePair<long,long>读取图表的值但是我想要显示某些点的一个轴值(y),所以我尝试在第一个参数处添加null但是图表无法显示。

我能做什么?感谢。

2 个答案:

答案 0 :(得分:1)

我猜你正在使用Collection KeyValuePair<long, long>并且这两个值是x和y坐标。对于仅设置值,我建议将其他值设置为-1。这样就可以了,因为您没有使用ulong

假设这些假设是正确的,您的集合称为Points

我建议使用linq,其中y是您想要的值:

 Points.Select(p => p.Value).ToArray();

 Points.Select(p => p.Value).ToList();

这将返回一个新的数组或列表,具体取决于包含所有y值。如果您需要x值,则可以使用Key代替Value。由于您只是抓取值,因此Key(x)为空,-1或其他任何内容都无关紧要。

更进一步,您可以选择所有y值,其中x符合条件。我猜这根据你的说法对你有用

  

某些点只有一个轴值(y)

同样,PointsKeyValuePair<long, long>

的集合
int example = 5;
Points.Where(p => p.Key == example).Select(p => p.Value).ToArray();

Points.Where(p => p.Key != -1).Select(p => p.Value).ToArray();

延续(见第一条评论):

Queue<KeyValuePair<long, long>> queue = new Queue<KeyValuePair<long, long>>();
KeyValuePair<string, Queue<KeyValuePair<long, long>>> pair = new KeyValuePair<string, Queue<KeyValuePair<long, long>>>("test", queue);

pair.Value.Enqueue(new KeyValuePair<long, long>(-1, 5));

我对此代码没有任何问题,工作正常。

可能的其他解决方案:

而不是KeyValuePair<long,long>。你可以拥有KeyValuePair<long,long[]>long[]会根据您的需要存储一个或两个值。唯一的限制是你必须假设如果数组长度为1,那么它只存储y而不存储x,否则如果数组大小为2,则假设它是{x,y}格式。

答案 1 :(得分:0)

如果我没错,你正在使用字典,如果是这样的话,字典的第一个值是X值,第二个值是Y值。

在字典中,第一个值是键,必须是唯一的。我知道当你尝试添加两个具有相同值的键时,dicitionary会抛出异常,但实际上我不知道你是否可以在键中设置空值。

如果字典让null值设置为键,那么问题可能是它可以找到值,因为有很多空键。

您可以尝试使用另一种方式来存储值,可能在结构中,如果您有很多点,则搜索值会更慢。