"Metoda" Boolean Contains (System.String) "nie obsługuje translacji do SQL."Metoda "Boolean Contains (System.String)" nie obsługuje tłumaczenia do SQL
zapytanie jest IsQueryable ale przestał działać:
foreach (string s in collection1)
{
if (s.Length > 0)
{
query = query.Where(m => m.collection2.Contains(s));
}
}
UPDATE: to działa, gdy robię zapytanie "IEnumerable" zamiast IQueryable. Jaki byłby sposób uzyskania tego samego wyniku przy użyciu linq zamiast iteracji przez pętlę?
można pisać co zapytanie jest, zanim przejdzie do tej pętli? –
Używanie czystego LINQ niczego nie zmienia - ma również ten sam problem. Z nieznanych przyczyn, jeśli LINQ wykryje "dziwną" kolekcję jako HashSet, nie używa jej jako IEnumerable, użytkownik musi przekonwertować swoją kolekcję bezpośrednio na IEnumerable - wtedy Containts jest poprawnie tłumaczony na SQL (IN I przypuszczam). – greenoldman