我有对象A,我有长度。我希望按长度顺序排序,然后我想将它们分组为三个并返回对象列表的列表。
我可以让分组工作,但我得到的只是分组的关键,而不是项目。
public class a
{
public string Id { get; set; }
public int Length { get; set; }
}
List<a> c = Instantiate a list
c.OrderByDescending(x => x.Length)
.Select((e, i) => new { Item = e, Grouping = (i / 3) })
.GroupBy(x => x.Grouping)
.Select(x => x.Key)
.ToList()
我认为这与我的小组有关,但我似乎无法让它发挥作用。我想要的是List<List<a>>
,最多有三个项目。
答案 0 :(得分:2)
使用此.Select(grp => grp.ToList())
代替.Select(x => x.Key)
。
这会将该组作为List<a>
返回。
答案 1 :(得分:0)
以下查询将生成列表,其中内部列表包含三个项目:
var listOfTriplets = c.OrderByDescending(x => x.Length)
.Select((x, i) => new { Index = i, Value = x })
.GroupBy(x => x.Index / 3)
.Select(x => x.Select(v => v.Value).ToList())
.ToList();