如何解决使用linq分组后更改项目值
很难解释,但我尝试。
我做了一个linq分组。
var grouping = aList.GroupBy(x => new { x.Width,x.Height,x.Quantity});
可以说我现在有3个分组分组。组1有1个项目,组2有5个项目,组3有9个项目。 所有项目都有一个“堆栈”字段。我现在要做的是,根据组在每个项目的堆栈字段中设置一个数字。
第1组中的所有项目应具有相同的“堆栈”编号,请说“ 1”,第2组中的所有项目应具有相同的“堆栈”编号,也许为“ 2”,并且第3组中的所有项目应具有相同的“堆栈”编号“堆栈”号。因此,每组一个“堆栈”数。
该怎么做?
解决方法
Linq是一个查询,并不意味着要修改现有对象。因此,如果您要修改现有内容而不创建新内容,请使用下面的代码
class Program
{
static void Main(string[] args)
{
List<MyList> aList = new List<MyList>() {
new MyList() { Width = 1,Height = 2,Quantity = 3},new MyList() { Width = 1,new MyList() { Width = 2,new MyList() { Width = 3,Quantity = 3}
};
var grouping = aList.GroupBy(x => new { x.Width,x.Height,x.Quantity });
int number = 0;
foreach (var group in grouping)
{
foreach (MyList myList in group)
{
myList.StackNumber = number;
}
number++;
}
}
}
public class MyList
{
public int Width { get; set; }
public int Height { get; set; }
public int Quantity { get; set; }
public int StackNumber { get; set; }
}
,
Select
还有另一个将索引号传递给委托的重载,您可以使用它。
var grouping = aList
.GroupBy(x => new { x.Width,x.Quantity});
.Select( (x,y) => new { Item = x,Stack = y } );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。