РЕДАКТИРОВАТЬ: mjwills правильно указывает, что гарантированный порядок важен в этом вопросе, поэтому другие два предложения не гарантированно работают. Оставляя только ту, которая дает эту гарантию.
private static IEnumerable<CollectionCategoryTitle> DistinctNewOrder(IEnumerable<CollectionCategoryTitle> src)
{
HashSet<string> seen = new HashSet<string>();
//for one last time, change for different string comparisons, such as
//new HashSet<string>(StringComparer.CurrentCultureIgnoreCase)
foreach(var item in src)
if(seen.Add(item.NewOrder))
yield return item;
}
/*...*/
var distinctTitles = reorderTitles.DistinctNewOrder().ToList();
Наконец, используйте .ToList()
только после вызова DistinctNewOrder()
, если вам действительно нужно, чтобы он был списком. Если вы собираетесь обработать результаты один раз, а затем больше не работать, лучше не создавать список, который тратит время и память.