У меня есть объект A, в котором у меня есть длины. Я хотел бы заказать по убыванию длины, затем я хотел бы сгруппировать их по тройкам и вернуть этот список списка объектов.Выберите группу из n объектов в список списка объектов
Я могу заставить группу работать, но все, что я получаю, является ключом группировки, а не элементами.
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>>
имел не более трех элементов.
как я правильно понял, просто превратить .Select (х => x.Key) в .Select (х => x.ToList()) – Victor
также, i/3 сломает вашу коллекцию на 3 части, чтобы разделить по длине, вы можете посмотреть ответ http://stackoverflow.com/questions/5215469/use-linq-to-break-up -listt-in-lots-of-list-of-n-length # 5215506 – Victor
@Victor, вот что мне хотелось бы. По крайней мере, на данный момент я бы просто просто разбился на группы по три, когда он отсортирован по длине. – Herrozerro