使用LINQ如何从列表中的列表中选择

时间:2020-07-10 17:40:26

标签: c# linq

public class StandardTrackingOutput
{
    public string MainCommitee { get; set; }
    public List<SubCommittees> SubCommittees { get; set; }
}

public class SubCommittees
{
    public string FormattedCommittee { get; set; }
    public string CommitteeTitle { get; set; }
}

我想代表MainCommittee从具有MainCommittee,FormattedCommittee和CommitteeTitle列的列表中生成StandardTrackingOutput。

我有以下数据:[在此处输入图片描述] [1]

主要委员会格式化的委员会名称 ABC ABC数据1 ABC ABC.01数据2 ABC ABC.02数据3 ABC ABC.03数据4 XYZ XYZ数据20 XYZ XYZ.09数据16 XYZ XYZ.08数据5

我想返回StandardTrackingOutput列表

预先感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您应该groupBy "offers": { "@type": "Offer", "price": "{{ product.price_max | divided_by: 100 }}", "priceCurrency": "{{ shop.currency }}", "url": {{ product.url | append: page.url | json }}, {%- if product.available -%} "availability": "https://schema.org/InStock", {%- else -%} "availability": "https://schema.org/OutOfStock", {%- endif -%} "itemcondition": "https://schema.org/NewCondition", "installment": { "months":"12", "amount ":"{{ product.price | money_with_currency }}" }, }, 并建立预期的结果:

MainCommitee

答案 1 :(得分:0)

基本上,您正在执行GroupBy:

void Main()
{
    var myData = new List<MyData> {
        new MyData{ MainCommitee="ABC", FormattedCommittee="ABC", CommitteeTitle="Data1" },
        new MyData{ MainCommitee="ABC", FormattedCommittee="ABC.01", CommitteeTitle="Data2" },
        new MyData{ MainCommitee="ABC", FormattedCommittee="ABC.02", CommitteeTitle="Data3" },
        new MyData{ MainCommitee="ABC", FormattedCommittee="ABC.03", CommitteeTitle="Data4" },
        new MyData{ MainCommitee="XYZ", FormattedCommittee="XYZ", CommitteeTitle="Data20" },
        new MyData{ MainCommitee="XYZ", FormattedCommittee="XYZ.09", CommitteeTitle="Data16" },
        new MyData{ MainCommitee="XYZ", FormattedCommittee="XYZ.08", CommitteeTitle="Data5" },
    };
    var result = myData.GroupBy(d => d.MainCommitee)
        .Select(d => new StandardTrackingOutput
        {
            MainCommitee = d.Key,
            SubCommittees = d.Select(s =>
                new SubCommittees
                {
                    FormattedCommittee = s.FormattedCommittee,
                    CommitteeTitle = s.CommitteeTitle
                })
                .ToList()
        });
    // if you have LinqPad (why not)
    // result.Dump(); 
}

public class StandardTrackingOutput
{
    public string MainCommitee { get; set; }
    public List<SubCommittees> SubCommittees { get; set; }
}

public class SubCommittees
{
    public string FormattedCommittee { get; set; }
    public string CommitteeTitle { get; set; }
}

public class MyData
{
    public string MainCommitee { get; set; }
    public string FormattedCommittee { get; set; }
    public string CommitteeTitle { get; set; }
}
相关问题