Dim tenItem = From t In _InvalidFeeList _
From i In ItemCount _
Where t.FeeCode <> i.FeeCode _
Order By t.Description _
Ascending Take (10)
Dim feeList As List(Of AccessorialFee) = tenItem.ToList()
我收到“无法转换为System.generic.list”错误。我全神贯注地看到这个错误,似乎我的代码应该适用于例如here
我不明白。有人能告诉我哪里弄错了吗?
编辑:我想我应该解释一下我在这里要做的事情。我想比较两个对象列表,如果FeeCode不等于ItemCount FeeCode中的对象,则从InvalidFeeList中选择对象,并从InvalidFeeList中获取前10个对象。
答案 0 :(得分:3)
问题是你有两个“From”子句,所以结果不仅仅是原始集合的类型。虽然很容易修复 - 只需在最后添加一个投影:
Dim tenItem = From t In _InvalidFeeList _
From i In ItemCount _
Where t.FeeCode <> i.FeeCode _
Order By t.Description _
Ascending Take (10) _
Select t ' This is the new line '
Dim feeList As List(Of AccessorialFee) = tenItem.ToList()
编辑:您是否在_InvalidFeeList
中找到FeeCode
中<{1}}中任何项目中不存在ItemCount
的项目?如果是这样,我建议做出这样的改变:
Dim feeCodes = From i In ItemCount Select i.FeeCode
Dim feeCodeSet = new HashSet(Of FeeCodeType)(feeCodes)
Dim tenItem = From t in _InvalidFeeList
Where Not feeCodeSet.Contains(t.FeeCode)
Order By t.Description _
Ascending Take (10)
Dim feeList As List(Of AccessorialFee) = tenItem.ToList()
正如你所看到的,我不知道FeeCode
的类型,而VB并不是我的强项,但我希望你能得到一般的想法。这个建议假设您正在使用LINQ to Objects - 如果您正在使用LINQ to SQL,我不确定最好的方法。请注意,我们不再需要Select
的{{1}}子句,因为我们现在只处理单个集合。
答案 1 :(得分:2)
_InvalidFeeList不是List(Of AccessorialFee)类型
[编辑]试试这个并添加断点和手表:
Dim tenItem = (From t In _InvalidFeeList _
From i In ItemCount _
Where t.FeeCode <> i.FeeCode _
Order By t.Description _
Ascending Take (10)).ToList().GetType()