2013-07-01 4 views
1

EDIT: НИЖЕ КОДА РАБОТЫ! (Я прокомментировал, построил, а затем раскололся, и он сработал).Linq наблюдаемая коллекция литой ошибки

У меня есть ObservableCollection для ListBox. Я хочу выбрать некоторые из этих элементов только на основе отображаемого имени, так как я не знаю значения элемента. Однако я получаю ошибку кастинга (IEnumerable to ObservableCollection).

ObservableCollection<ListBoxItem> unselectedcollection 
    = new ObservableCollection<ListBoxItem> 
     (dt.AsEnumerable() 
      .Select(i => new ListBoxItem(i[ColumnNames.LISTNAMECOL].ToString(), 
             i[ColumnNames.LISTVALUECOL].ToString()))); 

ObservableCollection<ListBoxItem> selectedcollection 
    = new ObservableCollection<ListBoxItem> 
     (from item in unselectedcollection.AsEnumerable() 
     where (item.Name == "firstName" 
       || item.Name == "secondName" 
       || item.Name == "thirdName") 
     select item); 

Я попробовал различные варианты литья я мог думать. Что мне не хватает?

+0

Включите свою первую коллекцию ('unselectedcollection') тоже, вероятно, это источник проблемы. –

+0

Что такое unselectedcollection? – PoweredByOrange

+0

Я добавил его к исходному вопросу – SeeMoreGain

ответ

0

Одна из распространенных проблем, с которыми я столкнулся при работе с коллекциями и передачи результата Linq, заключается в том, что коллекция не перечисляется и перечисление ее посредством вызова ToList часто устраняет проблему. Я бы сказал, что это поможет.

ObservableCollection<ListBoxItem> selectedcollection 
    = new ObservableCollection<ListBoxItem>(
     unselectedcollection.AsEnumerable() 
          .Where(item => item.Name == "firstName" 
             || item.Name == "secondName" 
             || item.Name == "thirdName") 
          .ToList()); 
0

Я не могу объяснить, как и почему, но я прокомментировал этот раздел и заполнил его пустыми списками для проведения тестирования. Я только что вернулся и раскоментировал его, чтобы дать точное сообщение об ошибке (по просьбе @nakiya) и перестроено ...

... и это сработало.

Снова я не знаю, как и почему, но по крайней мере я могу двигаться дальше.