c# – LINQ中的GroupBy和set属性
发布时间:2020-12-15 17:20:26 所属栏目:百科 来源:网络整理
导读:我有这样的课: public class Foo{ public string Regn{get;set;} public string DocName{get;set;} ...} 在我的应用程序中,此类使用IEnumerable: IEnumerableFoo items; 如何获得新的IEnumerable,对于具有相同Regn和DocName属性的所有项目,DocName设置如下
我有这样的课:
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) })); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |