Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ如何从列表中的列表中进行选择 公共类标准跟踪输出 { 公共字符串MainCommitee{get;set;} 公共列表子委员会{get;set;} } 公共类小组委员会 { 公共字符串格式化委员会{get;set;} 公共字符串提交{get;set;} }_C#_Linq - Fatal编程技术网

C# 使用LINQ如何从列表中的列表中进行选择 公共类标准跟踪输出 { 公共字符串MainCommitee{get;set;} 公共列表子委员会{get;set;} } 公共类小组委员会 { 公共字符串格式化委员会{get;set;} 公共字符串提交{get;set;} }

C# 使用LINQ如何从列表中的列表中进行选择 公共类标准跟踪输出 { 公共字符串MainCommitee{get;set;} 公共列表子委员会{get;set;} } 公共类小组委员会 { 公共字符串格式化委员会{get;set;} 公共字符串提交{get;set;} },c#,linq,C#,Linq,我想从列表中生成StandardTrackingOutput,该列表包含代表MainCommittee的MainCommittee、FormattedCommittee和CommitteeTile列 我有以下数据:[在这里输入图像描述][1] 主要委员会成立委员会委员会 ABC数据1 ABC.01数据2 ABC.02数据3 ABC.03数据4 XYZ XYZ数据20 XYZ XYZ.09数据16 XYZ XYZ.08数据5 我想返回StandardTrackingOutput的列表 提前感谢您的

我想从列表中生成StandardTrackingOutput,该列表包含代表MainCommittee的MainCommittee、FormattedCommittee和CommitteeTile列

我有以下数据:[在这里输入图像描述][1]

主要委员会成立委员会委员会 ABC数据1 ABC.01数据2 ABC.02数据3 ABC.03数据4 XYZ XYZ数据20 XYZ XYZ.09数据16 XYZ XYZ.08数据5

我想返回StandardTrackingOutput的列表

提前感谢您的帮助

您应该
main提交
并生成预期结果:

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; }
}
列表结果=委员会
.GroupBy(x=>x.MainCommitee)
.选择(x=>new StandardTrackingOutput
{
MainCommitee=x.键,
子委员会=x。选择(y=>新的子委员会
{
委员会=y.委员会,
FormattedCommittee=y.FormattedCommittee
})托利斯先生()
})
.ToList();

基本上你是在做一个GroupBy:

List<StandardTrackingOutput> result = committees
    .GroupBy(x => x.MainCommitee)
    .Select(x => new StandardTrackingOutput
    {
        MainCommitee = x.Key,
        SubCommittees = x.Select(y => new SubCommittees
        {
            CommitteeTitle = y.CommitteeTitle,
            FormattedCommittee = y.FormattedCommittee
        }).ToList()
    })
    .ToList();
void Main()
{
var myData=新列表{
新MyData{main committee=“ABC”,FormattedCommittee=“ABC”,committeetite=“Data1”},
新MyData{main committee=“ABC”,FormattedCommittee=“ABC.01”,committeetite=“Data2”},
新MyData{main committee=“ABC”,FormattedCommittee=“ABC.02”,committeetite=“Data3”},
新MyData{main committee=“ABC”,FormattedCommittee=“ABC.03”,committeetite=“Data4”},
新MyData{main committee=“XYZ”,FormattedCommittee=“XYZ”,CommitteeTitle=“Data20”},
新的MyData{main committee=“XYZ”,FormattedCommittee=“XYZ.09”,committeetite=“Data16”},
新的MyData{main committee=“XYZ”,FormattedCommittee=“XYZ.08”,committeetite=“Data5”},
};
var result=myData.GroupBy(d=>d.MainCommitee)
.选择(d=>new StandardTrackingOutput
{
MainCommittee=d.键,
小组委员会=d.选择(s=>
新的小组委员会
{
FormattedCommittee=s.FormattedCommittee,
委员会=s.委员会
})
托利斯先生()
});
//如果您有LinqPad(为什么没有)
//result.Dump();
}
公共类标准跟踪输出
{
公共字符串MainCommitee{get;set;}
公共列表子委员会{get;set;}
}
公共类小组委员会
{
公共字符串格式化委员会{get;set;}
公共字符串提交{get;set;}
}
公共类MyData
{
公共字符串MainCommitee{get;set;}
公共字符串格式化委员会{get;set;}
公共字符串提交{get;set;}
}

为什么你不能呢?这不是一个代码编写服务。先试试你自己,明确地问什么不起作用你对列表的
是什么意思?那么,您希望转换为
列表的源是什么?
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; }
}