更新WPF的ObservableCollection内容

时间:2011-12-16 14:33:56

标签: c# wpf visual-studio-2010

根据某些字段更新ObservableCollection数据最方便的是什么?我可以想到很多方法(Linq,迭代......)但我想知道是否有人提供了证明可以提供的东西。

public ObservableCollection<CCData> CCDataList =
    new ObservableCollection<CCData>();

public class CCData : INotifyPropertyChanged
{
    public string Symbol { get; set; }
    public string LastTick { get; set; }

    //INotifyPropertyChanged stuff here...
}

CCDataList.Add(new CCData
        {
            Symbol = "EUR/USD",
            Time = "12:21:58"
        });

 CCDataList.Add(new CCData
        {
            Symbol = "AUD/JPY",
            Time = "12:25:40"
        });

示例
让我们假设我想在集合中查找符号条目&#34; EUR / USD&#34;并更新时间条目。 怎么做到这一点?

2 个答案:

答案 0 :(得分:2)

正如您所提到的,有很多方法可以做到这一点。但是我仍然更喜欢Linq,并且会做这样的事情。当然,这不是非常防御性的编码,但你明白了。

CCDataList.Where(c => c.Symbol == "EUR/USD").First().Time = DateTime.Now;

您可以创建一个简单的方法来为您更新属性

public void UpdateCurrencyTime(string currencySymbol, DateTime time)
{
   var item = CCDataList.Where(c => c.Symbol == currencySymbol).FirstOrDefault();
   if(item != null)
       item.Time = time;
}

答案 1 :(得分:0)

从性能的角度来看,最好的方法是使用for循环迭代,第一次遇到所需的值时更新它并使用break来终止循环。 foreach和enumerable类扩展函数使用额外的资源,如枚举器。从编码的角度来看,它们是有效的,但从性能的角度来看,简单的循环是最好的。

相关问题