如何仅将一个值设置为KeyValuePair<;long,long>;用于图表wpf
本文关键字:long lt gt wpf 用于 KeyValuePair 何仅 设置 一个 | 更新日期: 2024-10-23 07:56:21
我需要从KeyValuePair<long,long>
中读取图表的值,但我只想显示某些点的一个轴值(y),所以我尝试在第一个参数处添加null,但图表无法显示。
我能做什么?谢谢
我猜您使用的是KeyValuePair<long, long>
的Collection
,这两个值是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)是否为null、-1或其他值都无关紧要。
更进一步,您可以选择所有的y值,其中x满足一个条件。根据你所说的,我猜这对你会有用
某些点只有一个轴值(y)
同样,其中Points
是KeyValuePair<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));
我对这个代码没有问题,运行良好。
可能的其他解决方案:
而不是具有CCD_ 13。你可以有KeyValuePair<long,long[]>
。long[]
将根据您的需要存储一个或两个值。唯一的限制是,您必须假设,如果数组的长度为1,那么它只存储y
,而不是x
,否则,如果数组大小为2,那么假设它是{x,y}格式。
如果我没有错,那么您使用的是字典,如果是这种情况,字典的第一个值用于X值,第二个值用于Y值。
在字典中,第一个值是关键字,并且必须是唯一的。我知道当你试图添加两个具有相同值的键时,决策者会抛出异常,但我真的不知道你是否可以在键中设置null值。
如果字典让键设置null值,那么问题可能是它可以找到值,因为有很多null键。
你可以尝试使用另一种方法来存储值,也许是在一个结构中,但如果你有很多点,搜索值的速度会较慢。