Хотите отличные значения? т.е. когда-нибудь будет {a, a, a, b, b, a, c, c, a}? Если нет, вы можете использовать LINQ:
foreach(string s in theList.Distinct()) {
doSomething(); // with s
}
Re ваше обновление; возможно использовать что-то вроде DistinctBy
:
foreach(var item in data.DistinctBy(x=>x.Foo)) {
Console.WriteLine(item.Bar);
}
public static IEnumerable<TSource> DistinctBy<TSource,TValue>(
this IEnumerable<TSource> source, Func<TSource,TValue> selector) {
var set = new HashSet<TValue>();
foreach (var item in source) {
if (set.Add(selector(item))) {
yield return item;
}
}
}