我有这样的课:
public class Foo
{
public string Regn{get;set;}
public string DocName{get;set;}
...
}
在我的应用程序中,此类使用IEnumerable:
IEnumerable<Foo> items;
如何获得新的IEnumerable,对于具有相同Regn和DocName属性的所有项目,DocName设置如下(仅当具有相同DocName> 1的对象时):
item.DocName=item.DocName+".1";//+"2",etc.
[UPDATE]
输入样本:
Regn DocName
1 1
1 2
1 2
2 5
2 5
2 6
输出:
Regn DocName
1 1
1 2.1
1 2.2
2 5.1
2 5.2
2 6
最佳答案 如果你有Foo的默认构造函数,请尝试使用:
var newItems = items.
GroupBy(f => Tuple.Create(f.Regn, f.DocName)).
SelectMany(gr => gr.Count()<=1 ? gr : gr.Select((f, i) => new Foo
{
Regn = f.Regn,
DocName = f.DocName + "." + (i + 1)
}));