如何仅将一个值设置为KeyValuePair<;long,long>;用于图表wpf

本文关键字:long lt gt wpf 用于 KeyValuePair 何仅 设置 一个 | 更新日期: 2024-10-23 07:56:21

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

我能做什么?谢谢

如何仅将一个值设置为KeyValuePair<;long,long>;用于图表wpf

我猜您使用的是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)

同样,其中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));

我对这个代码没有问题,运行良好。

可能的其他解决方案:

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

如果我没有错,那么您使用的是字典,如果是这种情况,字典的第一个值用于X值,第二个值用于Y值。

在字典中,第一个值是关键字,并且必须是唯一的。我知道当你试图添加两个具有相同值的键时,决策者会抛出异常,但我真的不知道你是否可以在键中设置null值。

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

你可以尝试使用另一种方法来存储值,也许是在一个结构中,但如果你有很多点,搜索值的速度会较慢。