var first = lst.First(x => x.ID == 3); - если вы уверены, что у вас точно есть искомый элемент в массиве (при отсутствии элемента будет ошибка выполнения)var first = lst.FirstOrDefault(x => x.ID == 3); - при отсутствии элемента вернет null
private static int tick = Environment.TickCount;
public int Id
{
get{return Interlocked.Increment(ref tick);}
}