我正在处理这些列表,以获取与组合框中所选项目相匹配的项目。
private void InitializaMessageElement()
{
if (_selectedTransactionWsName != null)
{
-
获取与下拉列表中所选项目匹配的交易 Web 服务名称,output=TestES 是正确的
var getTranTypeWsName = TransactionTypeVModel
.GetAllTransactionTypes()
.FirstOrDefault(transTypes =>
transTypes.WsMethodName == _selectedTransactionWsName);
-
从树节点列表中循环 wsname 列表。这里它给了我所有正确的节点。
var wsNameList = MessageElementVModel
.GetAllTreeNodes().Select(ame =>
ame.Children).ToList();//. == getTranTypeWsName.WsMethodName);
-
在 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(使用前将#替换为@)