2009-05-08 2 views
1
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». Я просматриваю эту ошибку, и, похоже, мой код должен работать, например, hereLinq to object: ToList не может преобразовать в общий список

Я не понимаю. Может ли кто-нибудь сказать мне, где я ошибся?

Редактировать: Я думаю, я должен объяснить, что я пытаюсь сделать здесь. Я хочу сравнить два списка объектов и выбрать объект из InvalidFeeList, если FeeCode не равен объекту в ItemCount FeeCode и взять первые 10 объектов из InvalidFeeList.

ответ

3

Проблема заключается в том, что у вас есть два "С" , поэтому результат - это не только тип оригинальной коллекции. Это легко исправить, хотя - просто добавьте проекцию в конце:

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() 

EDIT: Вы пытаетесь найти элементы в _InvalidFeeList которых FeeCode нет в любой элемент в 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 для объектов - если вы используете LINQ to SQL, я не уверен в том, как это сделать. Обратите внимание, что нам больше не нужно предложение Select для tenItem, поскольку мы имеем дело только с одной коллекцией.

+0

Это было. Спасибо. – Jack

+0

Одна проблема, выбранный t имеет тот же код feed, что и в ItemCount. Он не выбрал другой объект в _InvalidFeeList – Jack

+0

Тот же код, что и *, который * i? Вы эффективно присоединяетесь к * all * значениям i в ItemCount. Если в ItemCount есть два разных значения для FeeCode, вы получите каждый t в _InvalidFeeList_, возможно, несколько раз. Что вы на самом деле пытаетесь сделать? –

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() 
Смежные вопросы