using System;
using System.Linq;
using System.Collections.Generic;
class DateItem {
public DateTime? Date;
public int OtherField;
// other fields
}
public class Test
{
public static void Main()
{
var list = new List<DateItem>();
list.Add(new DateItem() { Date = new DateTime(2012, 01, 12), OtherField=500 });
list.Add(new DateItem() { Date = new DateTime(2012, 01, 12), OtherField=700 });
list.Add(new DateItem() { Date = new DateTime(2012, 01, 15), OtherField=900 });
list.Add(new DateItem() { Date = new DateTime(2012, 01, 15), OtherField=1100 });
list.Add(new DateItem() { Date = new DateTime(2012, 01, 27), OtherField=2000 });
var dups = list.Select((Item,Index) => new{Item,Index})
.GroupBy(x => x.Item.Date)
.Where(g => g.Count() > 1);
foreach(var dup in dups)
{
foreach (var nullable in dup.OrderBy(x => x.Item.Date).Skip(1))
{
list[nullable.Index].Date = null; // assuming DateTime?
}
}
var result = String.Join(Environment.NewLine, list.Select(i => string.Format("{0} {1}",
i.Date.HasValue ? i.Date.Value.ToShortDateString() : "null", i.OtherField)).ToArray());
Console.Write(result);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpjbGFzcyBEYXRlSXRlbSB7CiAgIHB1YmxpYyBEYXRlVGltZT8gRGF0ZTsKICAgcHVibGljIGludCBPdGhlckZpZWxkOwogICAvLyBvdGhlciBmaWVsZHMKfQoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJICAgdmFyIGxpc3QgPSBuZXcgTGlzdDxEYXRlSXRlbT4oKTsKICAgICAgICAgICBsaXN0LkFkZChuZXcgRGF0ZUl0ZW0oKSB7IERhdGUgPSBuZXcgRGF0ZVRpbWUoMjAxMiwgMDEsIDEyKSwgT3RoZXJGaWVsZD01MDAgfSk7CiAgICAgICAgICAgbGlzdC5BZGQobmV3IERhdGVJdGVtKCkgeyBEYXRlID0gbmV3IERhdGVUaW1lKDIwMTIsIDAxLCAxMiksIE90aGVyRmllbGQ9NzAwIH0pOwogICAgICAgICAgIGxpc3QuQWRkKG5ldyBEYXRlSXRlbSgpIHsgRGF0ZSA9IG5ldyBEYXRlVGltZSgyMDEyLCAwMSwgMTUpLCBPdGhlckZpZWxkPTkwMCB9KTsKICAgICAgICAgICBsaXN0LkFkZChuZXcgRGF0ZUl0ZW0oKSB7IERhdGUgPSBuZXcgRGF0ZVRpbWUoMjAxMiwgMDEsIDE1KSwgT3RoZXJGaWVsZD0xMTAwIH0pOwogICAgICAgICAgIGxpc3QuQWRkKG5ldyBEYXRlSXRlbSgpIHsgRGF0ZSA9IG5ldyBEYXRlVGltZSgyMDEyLCAwMSwgMjcpLCBPdGhlckZpZWxkPTIwMDAgfSk7CgogICAgICAgICAgICB2YXIgZHVwcyA9IGxpc3QuU2VsZWN0KChJdGVtLEluZGV4KSA9PiBuZXd7SXRlbSxJbmRleH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC5Hcm91cEJ5KHggPT4geC5JdGVtLkRhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaGVyZShnID0+IGcuQ291bnQoKSA+IDEpOwogICAgICAgICAgICBmb3JlYWNoKHZhciBkdXAgaW4gZHVwcykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIG51bGxhYmxlIGluIGR1cC5PcmRlckJ5KHggPT4geC5JdGVtLkRhdGUpLlNraXAoMSkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbGlzdFtudWxsYWJsZS5JbmRleF0uRGF0ZSA9IG51bGw7ICAvLyBhc3N1bWluZyBEYXRlVGltZT8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFN0cmluZy5Kb2luKEVudmlyb25tZW50Lk5ld0xpbmUsIGxpc3QuU2VsZWN0KGkgPT4gc3RyaW5nLkZvcm1hdCgiezB9IHsxfSIsIAogICAgICAgICAgICAgICAgaS5EYXRlLkhhc1ZhbHVlID8gaS5EYXRlLlZhbHVlLlRvU2hvcnREYXRlU3RyaW5nKCkgOiAibnVsbCIsIGkuT3RoZXJGaWVsZCkpLlRvQXJyYXkoKSk7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGUocmVzdWx0KTsKCX0KfQ==