我需要从中读取图表的值,KeyValuePair<long,long>
但我只想显示某些点的一个轴值(y),所以我尝试在第一个参数处添加 null 但无法显示图表。
我可以做什么?谢谢。
我需要从中读取图表的值,KeyValuePair<long,long>
但我只想显示某些点的一个轴值(y),所以我尝试在第一个参数处添加 null 但无法显示图表。
我可以做什么?谢谢。
我猜你正在使用 a Collection
ofKeyValuePair<long, long>
并且这两个值是 x 和 y 坐标。对于仅设置值,我建议将其他值设置为-1
. 这很好,因为您不使用ulong
.
假设这些假设是正确的,并且您的集合称为Points
.
我建议使用linq
where 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} 格式。
如果我没记错的话,你使用的是字典,如果是这样,字典的第一个值是 X 值,第二个值是 Y 值。
在字典中,第一个值是键并且必须是唯一的。我知道当你尝试添加两个具有相同值的键时,字典会抛出异常,但我真的不知道你是否可以在键中设置空值。
如果字典让键设置空值,那么问题可能是它可以找到值,因为有很多空键。
您可以尝试使用另一种方式来存储值,也许在一个结构中,如果您有很多点,那么搜索值会更慢。