Dobrý den, píšu program na mazání duplikovaných záznamů. Mám kolekci List<Emaily> seznam, která obsahuje všechny položky. Třída Emaily obsahuje několik vlastností (předmět, datum vytvoření atd.) a já se pokouším pomocí Linq dotazu získat jen ty záznamy, které mají shodná určitá pole. Vybírám tímto dotazem:
var dotaz = (from time in seznam
group time by new { time.Subject, time.CreationTime, time.LastModification } into g
where g.Count() > 1
select new { CreationTime = g.Key.CreationTime, Subject = g.Key.Subject, LastModification = g.Key.LastModification, PocetDuplikatu = g.Count() });
Dotaz funguje, ale potřeboval bych vždy jeden duplikovaný záznam z dotazu vynechat (abych nesmazal všechny záznamy). A tady jsem se zasekl a nevím, jestli se dá nějak upravit Linq dotaz, nebo se bude muset postupovat nějak jinak (seznam duplikovaných záznamů je "zgroupovaný", takže obsahuje od každého duplikátu jen jeden + jeho celkový počet).
|