InvalidCastExeption в LINQ to XML - PullRequest
       15

InvalidCastExeption в LINQ to XML

3 голосов
/ 17 мая 2011

Я использую LINQ to XML для получения некоторых данных из ресурсов, и здесь у меня есть функция, в которой я беру некоторые значения, а затем создаю новый объект (преобразование типов), поэтому при вызове функции я получаю переводобъект.Теперь у меня есть этот код:

     Public Shared Function RetrieveTranslation(ByVal file As String) As List(Of clsTranslation)
    Dim valuetrans = From vl In XElement.Load(file).Elements("data") Select (New clsTranslation With {.Filename = file, .Value = vl.Element("value").Value, .TranslationId = vl.Attribute("name").Value})
    Return valuetrans
End Function

Проблема заключается в том, что с этим кодом я получил эту ошибку: Невозможно привести объект типа 'WhereSelectEnumerableIterator 2[System.Xml.Linq.XElement,clsTranslation]' to type 'System.Collections.Generic.List 1 [clsTranslation]'.

Знаете ли вы, как его разыграть?Заранее спасибо,

Альфонсо.

1 Ответ

2 голосов
/ 17 мая 2011

Если бы вы компилировали с Option Strict, вы узнали бы об этом во время компиляции.

Вы не разыгрываете его - вы вызываете ToList() для результата, чтобы создать List<clsTranslation> из IEnumerable<clsTranslation>.

(Я бы также посоветовал вам отказаться от префикса cls; это противоречит соглашениям об именах .NET).

Что бы оставить:

Public Shared Function RetrieveTranslation(ByVal file As String) _
        As List(Of Translation)
    Return (From vl In XElement.Load(file).Elements("data") _
            Select (New Translation With { _
                               .Filename = file, _
                               .Value = vl.Element("value").Value, _
                               .TranslationId = vl.Attribute("name").Value}) _
           ).ToList()
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...