我需要从KeyValuePair<long,long>
读取图表的值但是我想要显示某些点的一个轴值(y),所以我尝试在第一个参数处添加null但是图表无法显示。
我能做什么?感谢。
答案 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)
同样,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}格式。
答案 1 :(得分:0)
如果我没错,你正在使用字典,如果是这样的话,字典的第一个值是X值,第二个值是Y值。
在字典中,第一个值是键,必须是唯一的。我知道当你尝试添加两个具有相同值的键时,dicitionary会抛出异常,但实际上我不知道你是否可以在键中设置空值。
如果字典让null值设置为键,那么问题可能是它可以找到值,因为有很多空键。
您可以尝试使用另一种方式来存储值,可能在结构中,如果您有很多点,则搜索值会更慢。