2015-08-12 2 views
1

Допустим, у меня есть 2 файла типа IEnumerable <XElement>. Как мне выполнить внутреннее соединение и/или групповое соединение на них? Я пробовал следующее, но метод .Join не работает на IEnumerable. Любая помощь будет оценена по достоинству.Выполнение Inner Join on 2 Файлы типа IEnumerable <XElement>

var innerjoin = file1.Join(file2, c => file1.Elements("OrderID"), o => file2.Elements("OrderID"), (c, o) => new { Customer = c, Order = o }); 

ответ

1

Предполагая, что file1 и file2 содержит IEnumerable<XElement> где каждый XElement имеет дочерний элемент OrderID, вы можете сделать соединим OrderID значения, как это:

var innerjoin = file1.Join(file2, 
          c => (string)c.Element("OrderID"), 
          o => (string)o.Element("OrderID"), 
          (c, o) => new {Customer = c, Order = o}); 

Или используя эквивалентный синтаксис запроса:

var innerjoin = from c in file1 
       join o in file2 
        on (string)c.Element("OrderID") equals (string)o.Element("OrderID") 
       select new {Customer = c, Order = o}; 
+0

гений, спасибо! – noobcoder

0

Код подтверждения с веб-страницы: https://code.msdn.microsoft.com/LINQ-Join-Operators-dabef4e9. Вероятно, вы захотите присоединиться к фактическому идентификационному номеру, а не только по имени элемента.

  var innerjoin = from f1 in file1.Elements("OrderID") 
          join f2 in file2.Elements("OrderID") on f1 equals f2 
          select new { file1, file2 };​ 

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

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