Linq 找出重複資料並標記

  • 658
  • 0

Linq 找出重複資料並標記

參考 https://stackoverflow.com/questions/18547354/c-sharp-linq-find-duplicates-in-list 之後依照需求調整

因為要將相同的資料全都找出來並標記,就不使用HashSet不標記第一筆的方法了

紀錄下最後使用的方法,所謂標記也只是很陽春地把值塞回另一個欄位去了:

public void MarkDuplicates<TSource, TKey>(IEnumerable<TSource> source, Func<TSource, TKey> selector, Action<TSource, TKey> markAct)
{
	foreach (var item in source.GroupBy(x => selector(x)).Where(g => g.Count() > 1).SelectMany(g => g))
		markAct(item, selector(item));
	return;
}

標記出A+B重複:

標記出A+C重複: