2013-12-10 91 views
1

我在C#以下结构:顺序列表中嵌套列表

public class Circus { 
    int Id; 
    public List<Performers> Performers = new List<Performers>(); 
} 

public class Performer { 
    int Id; 
    public List<Talents> Talents = new List<Talents>(); 
} 

public class Talent { 
    public int Id; 
    public string Name; 
    public int skill; 
} 

我怎么会为了通过技能表演(其中Talent.Id == 1)?也就是说,我需要通过它的子List的属性来订购List。我尝试了各种尝试和搜索,但没有任何结果会以这种方式排列列表。预先感谢您的任何帮助。

+1

显示你的企图,没有工作之一。显示损坏的代码比没有代码更好。 –

+0

另外...如果Talents为空,空或者不包含ID为1的Talent,那么排序行为应该如何? –

+0

@Eric J:对不起。过去一小时,我一直在输入/删除代码。我本可以试图回想一下我认为我认为接近的一些尝试。 – nycfdtd

回答

5

LINQ的解决方案:

var ordered = source.OrderBy(p => p.Talents.First(t => t.Id == 1).Skill).ToList(); 
+1

如果天赋为空,这将失败。我认为如果没有Id为1的人才也会失败。 –

+0

非常感谢。在我所有的尝试中,我都能看到我现在失去的东西。这是.Skill部分。虽然我有技能,但我没有把它放在正确的位置上。再次感谢你。 – nycfdtd

+0

@Eric J:在运行这行之前有一个空检查,代码中没有硬编码的id值,这仅仅是为了举例。 – nycfdtd