如何在KeyValuePair<> List<>中替换元素

3

好的,我有一个KeyValuePair列表:

public ObservableCollection<KeyValuePair<string, float>> values { get; set; }

现在我想知道是否已经存在这个元素。我尝试了以下方法:

bool conaintsValue = values.Contains(value);

那么现在我该如何替换这个元素呢? 这是我尝试的方法:

if(values.Contains(value))
{
    int i = values.IndexOf(value);
    values[i] = value;
}

但这并不起作用。

编辑: 我像这样添加了一个值!Values = 列表!

KeyValuePair<string, float> value = new KeyValuePair<string, float>(chartKey, chartValue);

这是我的清单:
public ObservableCollection<KeyValuePair<string, float>> values { get; set; }

4
你需要将该值替换为相同的值。 - daniel
1
你为什么要用 value 替换它本身?你是否检查过 values.Contains(value) 是否返回了 true - JLRishe
这样使用某种类型的字典难道不更容易吗? - ClickRick
@ClickRick 我从来没有用过字典,只是听说过。如果可以的话,您能给我一点代码和解释吗? - Marstaw
https://dev59.com/AWsz5IYBdhLWcg3wbHEw#7914854 - Christopher Lake
显示剩余5条评论
1个回答

4
我尝试了这个:
if (values.Contains(value))
{
    int i = values.IndexOf(value);
    KeyValuePair<string, float> newValue = new KeyValuePair<string, float>("test", (float)11.3);
    values[i] = newValue;
}

这个功能正常运转。您应该用新值替换旧值,而不是相同的值。


那回答了这个问题。现在我有一个不同的问题,但它与此无关 :) 谢谢! - Marstaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接