0

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

我可以做什么?谢谢。

4

2 回答 2

1

我猜你正在使用 a CollectionofKeyValuePair<long, long>并且这两个值是 x 和 y 坐标。对于仅设置值,我建议将其他值设置为-1. 这很好,因为您不使用ulong.

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

我建议使用linqwhere y 是您想要的值:

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

或者

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

这将返回一个新的数组或列表,具体取决于包含所有 y 值。如果您需要 x 值,您将使用Key而不是Value. 由于您只是获取值,因此Key(x) 是否为空、-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));

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

可能的其他解决方案:

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

于 2013-12-16T16:41:08.170 回答
0

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

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

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

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

于 2013-12-16T17:01:31.750 回答