简体   繁体   English

如何将这两个不同的LINQ查询合并为一个?

[英]How do I combine these two different LINQ queries into one?

How do I write this so that I can get the Id and the Fist and Last name all in one query? 如何编写此代码,以便可以在一个查询中同时获得ID,拳头和姓氏? Everything I have found via Search is database related and involves a Join or a Group, which I don't think is applicable to what I am trying to do. 我通过搜索找到的所有内容都与数据库有关,并且涉及到联接或组,我认为这些不适用于我要执行的操作。 I want to print the order Id and the associated first and last name to the screen. 我想在屏幕上打印订单ID和相关的名字和姓氏。

   static void Main()
    {
        XDocument document = XDocument.Parse(GetXml());

        var query = from el in document.Root.Elements("Order")
                    select new Orders
                    {
                        Id = (int)el.Element("Id")
                    };

        foreach (var cc in query)
        {
            Console.WriteLine(cc.Id);

        }

        var info = from el in document.Root.Elements("Order").Elements("BillingAddress")
                   select new BillingAddress
                   {
                       FirstName = (string)el.Element("FirstName"),
                       LastName = (string)el.Element("LastName")
                   };

        foreach (var cc in info)
        {
            Console.WriteLine("{0} {1}", cc.FirstName, cc.LastName);
        }

        Console.ReadLine();
    } 

    private static String GetXml()
    {
        return
            @"<ArrayOfOrder>
                <Order>
                    <Id>1</Id>
                    <OrderGuid />
                    <BillingAddress>
                        <FirstName>Harvey</FirstName>
                        <LastName>Danger</LastName>
                    </BillingAddress>
                </Order>
                <Order>
                    <Id>2</Id>
                    <OrderGuid />
                    <BillingAddress>
                        <FirstName>Brian</FirstName>
                        <LastName>Brakes</LastName>
                    </BillingAddress>
                </Order>
            </ArrayOfOrder>";
    }    

Add a BillingAddress property to your Orders class then you can do the following: BillingAddress属性添加到Orders类,然后可以执行以下操作:

var query = from el in document.Root.Elements("Order")
            select new Orders
            {
                Id = (int) el.Element("Id"),
                BillingAddress = new BillingAddress
                {
                    FirstName = (string) el.Element("BillingAddress").Element("FirstName"),
                    LastName = (string) el.Element("BillingAddress").Element("LastName")
                }
            };
var query = from el in document.Root.Elements("Order")
                    select new Orders
                    {
                        Id = (int)el.Element("Id"),
                        Names = el.Elements("BillingAddress")
                                  .Select(ba=> 
                                        new { FirstName = (string)ba.Element("FirstName"),
                                              LastName = (string)ba.Element("LastName")
                                            }
                    };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM