尴尬的林克排序

时间:2013-03-05 18:32:34

标签: c# linq

我有一个Foo对象列表:

List<Foo>

Foo本身包含一个Bar属性,其中包含一个Baz列表,其中包含一个名为DateHappened的DateTime属性:

public class Foo
{
   public Bar Bar { get; set; }
}

public class Bar
{
   public List<Baz> Baz { get; set; }
}

是否可以根据DateHappened属性的最早值对我的Foos列表进行排序?

2 个答案:

答案 0 :(得分:4)

var ordered = fooList.OrderBy(f => f.Bar.Baz.Min(b => b.DateHappened));

答案 1 :(得分:0)

var ordered = fooList
    .SelectMany(f => f.Bar.Bazs.Select(b => new { Foo = f, DT = b.DateTime }))
    .OrderBy(fd => fd.DT)
    .Select(fd => fd.Foo);

如果您想按照每个Baz列表中的最短时间进行排序,您可以执行以下操作:

var ordered = fooList
    .OrderBy(f => f.Bar.Bazs.Select(b => b.DateTime).Min());