2014-02-19 1 views
1

У меня есть XElement как это:Получить xElements как строку с запятой

<Table1> 
    <Field1>1</Field1> 
    <Field2>example1</Field1> 
    <Field1></Field1> 
    <Field4>540</Field1> 
</Table1> 

То, что я хочу, чтобы это две строки, как это:

String1="Field1,Field2,Field3,Field4" 
String2="1,example1,,540" 

То, что я сейчас:

Dim queryF = From p In elem.Elements _ 
     Select p.Name 
Dim queryV = From p In elem.Elements _ 
     Select p.Value 

Я знаю, что я могу преобразовать queryF и queryV в список или массив, а затем производить строки, но мне было интересно, могу ли я сделать это непосредственно в s AME LINQ

Заранее спасибо

ответ

1

Вы не можете контролировать тип данных, возвращаемых запросом LINQ. Тип определяется провайдером LINQ (в данном случае поставщиком LINQ to XML). Однако вы знаете, что все, что он вернет, всегда будет реализовывать IEnumerable. Поскольку метод String.Join имеет перегрузку, которая принимает IEnumerable параметр, вам не нужно сначала преобразовать его в массив:

Dim elem As XElement = <Table1> 
          <Field1>1</Field1> 
          <Field2>example1</Field2> 
          <Field1></Field1> 
          <Field4>540</Field4> 
         </Table1> 
Dim string1 As String = String.Join(",", From p In elem.Elements Select p.Name) 
Dim string2 As String = String.Join(",", From p In elem.Elements Select p.Value) 
+0

Спасибо вам большое за отличный ответ – Nianios

 Смежные вопросы

  • Нет связанных вопросов^_^