微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – LINQ中的GroupBy和set属性

我有这样的课:

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)
            }));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐