我正在尝试使用linq从一组项中提取值。该字段可能不存在,或者它是空的,因此我希望按非空且不为空的字段进行过滤。字段值是数字类型,我想将它们投影到字符串。此查询的回报是WhereSelectEnumerableIterator(Of NestedTableItem, String)
。 编辑:看起来这是适当的返回类型。 我很难理解为什么这仍然会在字符串旁边投射最后我想在查询上调用ToList,但是我得到一个异常,即在该类型上找不到ToList。NestedTableItem
。
.NET版本:4.5.1
参考文献:
Microsoft.VisualBasic
,System
,System.Core
,System.IO
,System.Linq
,System.Runtime
,System.Xml
,System.Xml.Linq
进口:
Imports System
,
Imports System.Text
,
Imports System.Collections.Generic
,
Imports System.Linq
,
Imports System.Runtime.CompilerServices
,
Imports System.Xml
,
Imports System.IO
Dim aasItems As IEnumerable(Of NestedTableItem) = aasTable.NestedTableItems
Dim query = From item In aasItems
Let field = item.AllFields.ValueFields.Find("AASProposedTotalMinCreditHours")
Where field IsNot Nothing AndAlso Not field.IsEmpty
Select New String(field.Numeric9Value.ToString())
Dim aasMinStringList = query.ToList()
特定的异常消息:
Public member 'ToList' on type 'WhereSelectEnumerableIterator(Of NestedTableItem,String)' not found.
提前致谢!
编辑:更新了标题以更好地匹配问题。
答案 0 :(得分:0)
我能够通过将查询转换为IEnumerable(Of String)来解决这个问题。
Dim aasItems As IEnumerable(Of NestedTableItem) = aasTable.NestedTableItems
Dim query As IEnumerable(Of String) = _
From item In aasItems
Let field = item.AllFields.ValueFields.Find("AASProposedTotalMinCreditHours")
Where field IsNot Nothing AndAlso Not field.IsEmpty
Select New String(field.Numeric9Value.ToString())
Dim aasMinStringList = query.ToList()
我仍然不确定为什么原始代码不起作用。如果有人有任何见解,我会更加理解。