对 2 个 IEnumerable<XElement> 类型的文件执行内部联接

Perform Inner Join on 2 Files of type IEnumerable<XElement>

假设我有 2 个 IEnumerable<XElement> 类型的文件。我将如何对他们执行内部加入 and/or 组加入?我尝试了以下方法,但 .Join 方法在 IEnumerable 上不起作用。任何帮助将不胜感激。

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

尝试网页中的以下代码:https://code.msdn.microsoft.com/LINQ-Join-Operators-dabef4e9。您可能想要加入实际 ID 号而不仅仅是元素名称。

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

假设 file1file2 包含 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};