C# 如何对 XML 对象的列表进行分组

问题描述 投票:0回答:1

大家好,问候,

我需要帮助,按我的 XML 对象类进行分组。

这里是我来自 SQL Server 的数据,我的查询 (从 TaxXMLdb 选择 *)=

DocEntryAR 买家文件编号 买家姓名 选择 商品代码 姓名 DocEntryAR2
AAA 100100 5533 安托 0 2001 100100
AAA 100100 5533 安托 0 2002 书桌 100100
AAA 100100 5533 安托 0 2003 钥匙 100100
AAA 200100 7722 丹尼 0 5001 200100
AAA 200100 7722 丹尼 0 5002 汽车 200100
AAA 300100 2211 妮娜 0 3001 风扇 300100

我希望 XML 输出看起来像这样,

按 DocEntryAR 标头分组,针对每个详细信息(选项、ItemCode、名称、DocEntryAR2)

((DocEntryAR,BuyerDocNum,BuyerName)作为标题)

((Opt, ItemCode, Name, DocEntryAR2) as Detail) ,如下所示 =

<TaxInvoiceBulk>
    <TIN>AAA</TIN>
    <ListOfTaxInvoice>
        <TaxInvoice>
            <DocEntryAR>100100</DocEntryAR>
            <BuyerDocNum>5533</BuyerDocNum>
            <BuyerName>Anto</BuyerName>
            <ListOfGoodService>
                <GoodService>
                    <Opt>0</Opt>
                    <ItemCode>2001</ItemCode>
                    <Name>Book</Name>
                    <DocEntryAR2>100100</DocEntryAR2>
                </GoodService>
                <GoodService>
                    <Opt>0</Opt>
                    <ItemCode>2002</ItemCode>
                    <Name>Desk</Name>
                    <DocEntryAR2>100100</DocEntryAR2>
                </GoodService>
                <GoodService>
                    <Opt>0</Opt>
                    <ItemCode>2003</ItemCode>
                    <Name>Key</Name>
                    <DocEntryAR2>100100</DocEntryAR2>
                </GoodService>
            </ListOfGoodService>
        </TaxInvoice>
        <TaxInvoice>
            <DocEntryAR>200100</DocEntryAR>
            <BuyerDocNum>7722</BuyerDocNum>
            <BuyerName>Dani</BuyerName>
            <ListOfGoodService>
                <GoodService>
                    <Opt>0</Opt>
                    <ItemCode>5001</ItemCode>
                    <Name>Lamp</Name>
                    <DocEntryAR2>200100</DocEntryAR2>
                </GoodService>
                <GoodService>
                    <Opt>0</Opt>
                    <ItemCode>5002</ItemCode>
                    <Name>Car</Name>
                    <DocEntryAR2>200100</DocEntryAR2>
                </GoodService>
            </ListOfGoodService>
        </TaxInvoice>
        <TaxInvoice>
            <DocEntryAR>300100</DocEntryAR>
            <BuyerDocNum>2211</BuyerDocNum>
            <BuyerName>Nina</BuyerName>
            <ListOfGoodService>
                <GoodService>
                    <Opt>0</Opt>
                    <ItemCode>3001</ItemCode>
                    <Name>Fan</Name>
                    <DocEntryAR2>300100</DocEntryAR2>
                </GoodService>
            </ListOfGoodService>
        </TaxInvoice>
    </ListOfTaxInvoice>
</TaxInvoiceBulk>

这里是我的 xml 类列表 =

[Serializable]
[XmlType(TypeName = "TaxInvoiceBulk")]

public class TaxInvoiceBulk
{
    public string TIN { get; set; }
    public List<TaxInvoice> TaxInvoice1 { get; set; }
    public TaxInvoiceBulk() 
    {
        TaxInvoice1 = new List<TaxInvoice>();
    }

    [Serializable]
    public class TaxInvoice
    {
        public string DocEntryAR { get; set; }
        public string BuyerDocNum { get; set; }
        public string BuyerName { get; set; }
        public List<GoodService> GoodService1 { get; set; }
        public TaxInvoice()
        {
            GoodService1 = new List<GoodService>();
        }
    }

    [Serializable]
    public class GoodService
    {
        public string Opt { get; set; }
        public string ItemCode { get; set; }
        public string Name { get; set; }
        public string DocEntryAR2 { get; set; }
    }
}//end public class TaxInvoiceBulk

我使用 xml 类列表和代码可以从 C# 生成 XML

使用System.Xml.Serialization; 但我的输出 XML 仍然是错误的结果,看起来不像我想要的。

任何人都可以通过我们的 LinQ 或其他解决方案帮助修复/创建新的列表类和组 对于这样的输出 XML。

谢谢问候。

c# xml list arraylist nested-lists
1个回答
0
投票
public record TaxInvoiceBulk
{
    public required string TIN;
    public List<TaxInvoice> ListOfTaxInvoice = [];

    public record TaxInvoice
    {
        public required string DocEntryAR;
        public required string BuyerDocNum;
        public required string BuyerName;
        public List<GoodService> ListOfGoodService = [];
    }

    public record GoodService
    {
        public required string Opt;
        public required string ItemCode;
        public required string Name;
        public required string DocEntryAR2;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.