2013-06-17 7 views
1

Я работаю над этими списками, чтобы получить элемент, соответствующий выбранному элементу из выпадающего списка.не может конвертировать из 'System.Collections.Generic.IEnumerable <System.Collections.Generic.IEnumerable в System.Collections.Generic.List

private void InitializaMessageElement() 
{ 
    if (_selectedTransactionWsName != null) 
    { 
  1. получить имя транзакции WebService соответствие выбранного элемента из выпадающего здесь выход = TestWS который является правильным

    var getTranTypeWsName = TransactionTypeVModel 
        .GetAllTransactionTypes() 
        .FirstOrDefault(transTypes => 
          transTypes.WsMethodName == _selectedTransactionWsName); 
    
  2. Loop список wsnames из списка TreeNode. Здесь он дает мне все, что у меня есть, что правильно.

    var wsNameList = MessageElementVModel 
        .GetAllTreeNodes().Select(ame => 
          ame.Children).ToList();//. == getTranTypeWsName.WsMethodName); 
    
  3. найти getTranTypeWsName.WsMethodName в wsNameList. Вот где у меня проблема:

     var msgElementList = wsNameList.Select(x => x.Where(ame => getTranTypeWsName != null && ame.Name == getTranTypeWsName.WsMethodName)).ToList(); 
    

мой список MsgElement:

_msgElementObsList = new ObservableCollection<MessageElementViewModel>(msgElementList); 
    this.messageElements = _msgElementList; 
    NotifyPropertyChanged("MessageElements"); 
} 

Здесь бросает исключение Cannot convert from 'System.Collections.Generic.IEnumerable<System.Collections.Generic.IEnumerable to System.Collections.Generic.List).

+0

Какая линия точно делает компилятор бросить исключение для? –

+0

MsgElementObsList = новый ObservableCollection (msgElementList); ... msgElementList - это ошибка с ошибкой. –

ответ

1

У вас есть список IEnumerable, а не список MessageElementViewModel. Вот почему вы делаете ошибку.

Не знаете, какой из них вам нужен, но вы можете исправить свою функцию Select, как эта.

var msgElementList = wsNameList.Select(x => x.Where(ame => getTranTypeWsName != null && ame.Name == getTranTypeWsName.WsMethodName).First()).ToList(); 

или

var msgElementList = wsNameList.SelectMany(x => x.Where(ame => getTranTypeWsName != null && ame.Name == getTranTypeWsName.WsMethodName)).ToList(); 
+0

Отлично! Второй работал для меня .. Большое спасибо! –

0

Вы можете переработать ваши msgElementList к

var msgElementList = wsNameList.Where(x => x.Name == getTranTypeWsName.WsMethodName).ToList();? 

getTranTypeWsName != null не принадлежит, я не думаю, потому что он не сравнится ни с одним из членов лямбды.

+0

Спасибо. Получил ответ от @Ceres –

Смежные вопросы

 Смежные вопросы