0

ICollection type() である Object があります。同じ ID 値があるかどうか、このオブジェクトをチェックインしたいです。同じ ID がある場合は、2 つの異なるアイテムのプロパティをマージする必要があります。

どのように私はそれを作ることができますか?

4

1 に答える 1

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);
于 2013-09-19T16:49:03.530 に答える