2014-01-06 4 views
1

내가 VB로 변환이Visual Basic의 LINQ는 객체가

var books = System.Xml.Linq.XDocument.Load(_filename).Root.Elements("Book").Select(
      x => new Book(
       (string)x.Element("Title"), 
       (string)x.Element("Author"), 
       (string)x.Element("Publisher"), 
       (string)x.Element("ISBN"))); 

return books; 

같은 C# 코드를 선택할 수 없습니다하지만 난 내가 선택 부분을 쓸 수있는 방법을 잘 모릅니다.

Dim books = System.Xml.Linq.XDocument.Load(_filename).Root.Elements("Book"). 
      Select(/****what should i write here ***/) 
Return books 
+0

요소를 문자열로 변환하려면'DirectCast'를 사용해야합니다. – XN16

답변

0

을 다음

x.Element("Title").Value 

보다는

x.Element("Title") 

첫 번째 때문에

"My Book" 

그리고 두 번째 반환 - 같은 :

"<Title>My Book</Title>" 
1

보십시오 또 다른 중요한 점은 당신이 아마 XElement.Value 찾고있는 것입니다

.Select(Function (x) 
    Return new Book(
    CType(x.Element("Title"), String), 
    CType(x.Element("Author"), String), 
    CType(x.Element("Publisher"), String), 
    CType(x.Element("ISBN"), String)) 
    End Function) 
+0

x.Element ("Title"). Value)와 같은 ".Value"를 추가하지 않으면 과 같은 오류가 발생합니다. ''System.Xml.Linq.XElement '유형의 값을'String '으로 변환 할 수 없습니다. " – AndroCoder

+0

@AndroCoder는 DirectCast 대신 CType을 사용하여 업데이트합니다. – JaredPar

0

마지막으로 내가 내 코드했습니다 같은과 지금 맞습니다

.Select(Function(x) 
      Return New Book(
       DirectCast(x.Element("Title").Value, String), 
       DirectCast(x.Element("Author").Value, String), 
       DirectCast(x.Element("Publisher").Value, String), 
       DirectCast(x.Element("ISBN").Value, String)) 
     End Function) 
는 DirectCast과 가치는 중요한

이다