gpt4 book ai didi

c# - 根据属性将列表分成多个列表

转载 作者:行者123 更新时间:2023-12-03 09:27:45 25 4
gpt4 key购买 nike

我有一个列表,其中包含接口(interface) IGrid 的项目(我创建了它)

public interface IGrid
{
RowIndex { get; set; }
ColumnIndex { get; set; }
}

我想创建一个将List分隔为多个列表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;
}
}

有什么更好的方法来做到这一点?

最佳答案

是的,您可以使用 LINQ 在一条语句中完成此操作:

public List<List<IGrid>> Separat(List<IGrid> source) {
return source
.GroupBy(s => s.RowIndex)
.OrderBy(g => g.Key)
.Select(g => g.ToList())
.ToList();
}

如果您不关心列表按 RowIndex 的升序显示(您的方法生成它们的方式),则可以从方法调用链。

关于c# - 根据属性将列表分成多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16998254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com