C# 更新ObservableCollection中的现有值

C# 更新ObservableCollection中的现有值,c#,.net,xaml,c#-4.0,C#,.net,Xaml,C# 4.0,我正在尝试更新并向ObservableCollection添加值 我这样定义了可观测集合 public ObservableCollection<Tuple<string, int>> LogSummary { get; set; } 在我的课堂上,我订阅了一个事件,该事件发送一个包含字母a、B、C、D、E或F的字符串 如果我收到的字符串在集合中已经存在,我只想更新第二个itemint,它是我收到的字符串字母的计数 如果我写这个代码 LogSummary.Add

我正在尝试更新并向ObservableCollection添加值

我这样定义了可观测集合

public ObservableCollection<Tuple<string, int>> LogSummary
{
  get;
  set;
}
在我的课堂上,我订阅了一个事件,该事件发送一个包含字母a、B、C、D、E或F的字符串

如果我收到的字符串在集合中已经存在,我只想更新第二个itemint,它是我收到的字符串字母的计数

如果我写这个代码

LogSummary.Add(new Tuple<string, int>(_stringFromEvent, intValue));
这将只在集合中添加新行,因此在使用LogSummary.add之前,我需要弄清楚如何检查字符串是否已存在,如果已存在,则应采用当前的int值并进行更新,而不是向集合中添加新行

希望你能理解我的问题! 提前感谢,,
Jack

这是可行的,但我如何才能只更新LogSummary中的int值?@jackit,您可以使用元组的.Item2属性来更新其他部分。请参阅上面的更新。我正在获取无法分配给的属性或索引器“System.Tuple.Item2”-它是只读的,但属性未设置为private..抱歉,应该测试它,您可以创建一个新的Tuple实例
var existing = LogSummary.FirstOrDefault(t=>t.Item1 == _stringFromEvent)
if(existing != null)
{
     //update
      LogSummary[LogSummary.IndexOf(existing)] = 
                     new Tuple<string, int>(existing.Item1, intValue);
}
else
{
    //insert new
}