# Optimizing a distinction code

List<int> types = new List<int>();
foreach (var d in myTableList)
{
if (!types.Contains((int)d.item_type))
}


I have a table in db called myTable. There is a column in it called item_type. It is integer.

I want to make a list which would have all item_type which are in myTableList, but there shouldn't be duplicates.

I tried:

types = myTableList.Distinct(x => x.item_type)


but I want types to be list of integers, not items of type myTable.

-

Try

types = myTableList
.Select(x => (int)x.item_type)
.Distinct();


You may also want to add .ToList() at the end if you want to match original code

-

Another option is to just use a HashSet<T> to do the distinction for you:

var types = new HashSet<int>(myTableList.Select(x => (int)x.item_type)).ToList();

-
Distinct does exactly that –  almaz Feb 2 '13 at 9:21
Just to expand my previous comment... Distinct uses HashSet to ensure uniqueness of elements, and outputs element if it has not been seen before. –  almaz Feb 2 '13 at 10:10
Yes, hence why I said "another option". –  OJ. Feb 2 '13 at 22:16