У меня есть список содержит элементы интерфейса IGrid
(я его создал)отдельный список на несколько списков, основанных на собственности
public interface IGrid
{
RowIndex { get; set; }
ColumnIndex { get; set; }
}
, и я хочу, чтобы создать метод, который отделяет Список в нескольких списках List>
основан на свойстве RowIndex
так что я написал:
public List<List<IGrid>> Separat(List<IGrid> source)
{
List<List<IGrid>> grid = new List<List<IGrid>>();
int max= source.Max(c => c.RowIndex);
int min = source.Min(c => c.RowIndex);
for (int i = min; i <= max; i++)
{
var item = source.Where(c => c.RowIndex == i).ToList();
if (item.Count > 0)
grid.Add(item);
}
return grid;
}
}
Что такое лучший способ сделать это?
Какова сложность этого утверждения? Это будет взорваться, если у меня будут большие списки? –
@DanB Это не слишком дорого - самым дорогим является «OrderBy», который является O (n * log n) в худшем случае (когда группы имеют размер 1). Группировочная часть - O (n). – dasblinkenlight