【问题标题】:Way to check if any object in ICollection have the same ID value检查 ICollection 中的任何对象是否具有相同 ID 值的方法
【发布时间】:2013-09-19 16:09:22
【问题描述】:

我有一个 ICollection type() 对象。如果有相同的 ID 值,我想检查这个对象。如果有相同的 ID,我希望合并两个不同项目的属性。

我怎样才能做到?

【问题讨论】:

  • ICollection<T> 没有 ID 属性。所以我假设你的 T 类型有 ID。您是否只是想遍历集合,然后合并集合中的两个项目?请更详细地解释您要查找的内容。您不能在迭代时更改集合,但这里有很多关于此的文章。

标签: c# icollection


【解决方案1】:

我不得不对您的具体情况做出一些假设。但是假设存储在您的 ICollection 中的数据类型看起来像这样。

public class Data
{
    public int ID { get; set; }
    public string Value { get; set; }
}

然后你可以使用一些 linq 并做这样的事情。

List<Data> data = new List<Data>
{
        new Data { ID = 0, Value = 3.2m },
        new Data { ID = 1, Value = 6.9m },
        new Data { ID = 2, Value = 9.4m },
        new Data { ID = 3, Value = 2.1m },
        new Data { ID = 4, Value = 8.4m },
        new Data { ID = 5, Value = 1.1m },
        new Data { ID = 0, Value = 6.8m }
};

List<Data> dupe = (
    from d in data
    group d by d.ID into g
    where g.Count() > 1
    select new Data { ID = g.Key, Value = g.Select(v => v.Value).Sum() }).ToList();

data.RemoveAll(d => dupe.Select(v => v.ID).Contains(d.ID));
data.AddRange(dupe);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2020-07-09
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    相关资源
    最近更新 更多