using System.Collections.Generic;
public class SearchResultRow {
public int Intid {get;set;}
public int UpdateCount {get;set;}
public DateTime? Tlc {get;set;}
public SearchResultRow(int id, int? updCount, DateTime? tlc){
this.UpdateCount = updCount ?? 0;
public static void Main(string[] args)
var startDate = DateTime.Now;
Console.WriteLine("Creating list of results...");
var listOfItems = CreateListOfSearchResults(100000);
startDate = DateTime.Now;
var newList = RemoveDupesFromSearchResult_UsingLINQ(listOfItems);
Console.WriteLine("RemoveDupesFromSearchResult_UsingLINQ took: {0:N6}ms", (endDate - startDate).Milliseconds);
startDate = DateTime.Now;
newList = RemoveDupesFromSearchResult_UsingDictionary(listOfItems);
Console.WriteLine("RemoveDupesFromSearchResult_UsingDictionary took: {0:N6}ms", (endDate - startDate).Milliseconds);
private static List<SearchResultRow> CreateListOfSearchResults(int qty = 100){
var list = new List<SearchResultRow>();
for(var i = 0; i < qty;i++){
list.Add(new SearchResultRow(i +1, 0, null));
private static List<SearchResultRow> RemoveDupesFromSearchResult_UsingLINQ(List<SearchResultRow> searchResult)
return searchResult.DistinctBy(t => t.Intid).ToList();
private static List<SearchResultRow> RemoveDupesFromSearchResult_UsingDictionary(List<SearchResultRow> searchResult)
var distinctList = new Dictionary<int, SearchResultRow>();
foreach (var item in searchResult)
distinctList[item.Intid] = item;
return distinctList.Values.ToList();