我正在做一个简单的 GroupBy 获取第一个元素,但我想修改每个结果的一个属性。
class M
{
public string Name {get; set;}
public int NOfPeopleWithTheSameName {get; set;}
public string P1 {get; set;}
public string P2 {get; set;}
public string P3 {get; set;}
public string P4 {get; set;}
public string P5 {get; set;}
}
List<M> myList = GetMyList();
var l2 = myList
.GroupBy(m => m.Name)
.Select(group => new M { Name = group.Key, NOfPeopleWithTheSameName = group.Count() });
这很简单,但是如果类有很多属性(因为每个属性值都应该复制到新的属性值),那么这种方法不是最好的吗?我应该一一复制。
我想简单地获取该元素并更改属性 NOfPeopleWithTheSameName
您不需要创建一个新的M
,您可以返回现有的,例如:
var l2 = myList
.GroupBy(m => m.Name)
.Select(group =>
{
var m = group.First();
m.NOfPeopleWithTheSameName = group.Count();
return m;
});
但是,如果您打算为此向模型添加一个属性,我建议您使用一个不同的类来包装初始模型和计数 - 不要污染您的模型。例如,您可以有一个像这样的通用包装类:
public class ModelCount<T>
{
public T Model { get; set; }
public int Count { get; set; }
}
现在这样分组:
var l2 = myList
.GroupBy(m => m.Name)
.Select(group => new ModelCount<M>
{
Model = group.First(),
Count = group.Count()
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)