无法转换类型为WhereSelectListIterator 2 System.Collections.Generic.List的对象

2024-04-23

我正在处理这些列表,以获取与组合框中所选项目相匹配的项目。

private void InitializaMessageElement()
{
    if (_selectedTransactionWsName != null)
    {
  1. 获取与下拉列表中所选项目匹配的交易 Web 服务名称,output=TestES 是正确的

    var getTranTypeWsName = TransactionTypeVModel
         .GetAllTransactionTypes()
         .FirstOrDefault(transTypes => 
                 transTypes.WsMethodName == _selectedTransactionWsName);
    
  2. 从树节点列表中循环 wsname 列表。这里它给了我所有正确的节点。

    var wsNameList = MessageElementVModel
         .GetAllTreeNodes().Select(ame => 
                 ame.Children).ToList();//. == getTranTypeWsName.WsMethodName);
    
  3. 在 wsNameList 中找到 getTranTypeWsName.WsMethodName。这是我遇到问题的地方:

          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");
}

这里抛出了强制转换错误。为什么它不起作用?我是 LINQ 新手。谢谢


正如错误试图告诉您的那样,LINQ 方法返回特殊的迭代器类型IEnumerable<T>;他们不会回来List<T>.
这可以实现延迟执行。

由于该对象实际上不是List<T>,你不能将它转换为它不是的类型。

如果您需要一个List<T>,您可以致电ToList(),或者完全跳过 LINQ 并使用List<T>.ConvertAll(),就像Select(),但确实返回List<T>.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法转换类型为WhereSelectListIterator 2 System.Collections.Generic.List的对象 的相关文章

随机推荐