Обновление содержимого ObFableCollection WPF - PullRequest
0 голосов
/ 16 декабря 2011

Что наиболее удобно для обновления данных 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"
        });

Пример
Предположим, я хочу посмотреть в коллекции на символ записи «EUR / USD» и обновить запись времени. Как этого добиться?

Ответы [ 2 ]

2 голосов
/ 16 декабря 2011

Есть много способов сделать это, как вы упомянули.Однако я все еще предпочитаю, чтобы 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;
}
0 голосов
/ 16 декабря 2011

чувак, лучший способ с точки зрения производительности - это итерация цикла for с использованием, и при первом появлении нужного значения обновите его и используйте разрыв для завершения цикла. расширенные функции класса foreach и перечисляемого класса используют дополнительные ресурсы, такие как перечислитель. с точки зрения кодирования они эффективны, но с точки зрения производительности простое зацикливание является лучшим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...