Prawdopodobnie warto po prostu przeprowadzić parsowanie lokalnie zamiast w bazie danych, za pomocą AsEnumerable
:
var query = db.tb1.Select(tb => tb.dt)
.AsEnumerable() // Do the rest of the processing locally
.Select(x => DateTime.ParseExact(x, "yyyyMMdd",
CultureInfo.InvariantCulture));
Początkowy wybór ma na celu zapewnienie, że zostanie pobrana tylko odpowiednia kolumna, a nie cała jednostka (tylko po to, aby większość z nich została odrzucona). Unikałem również używania typu anonimowego, ponieważ wydaje się, że nie ma to tutaj sensu.
Przy okazji, zwróć uwagę, jak określiłem kulturę niezmienną — prawie na pewno nie chcą po prostu korzystać z obecnej kultury. Zmieniłem też wzorzec używany do analizowania, ponieważ brzmi jak Twoje źródło dane są w formacie yyyyMMdd
format.
Oczywiście, jeśli to w ogóle możliwe, powinieneś zmienić schemat bazy danych, aby przechowywać wartości dat w kolumnie opartej na dacie, a nie jako tekst.