Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Slouží AsEnumerable k vrácení argumentu zadaného jako obecný IEnumerable
.
Příklad
V tomto příkladu by se LINQ to SQL (pomocí výchozího obecného Query
) pokusil převést dotaz na SQL a spustit ho na serveru. Klauzule where
ale odkazuje na uživatelsky definovanou metodu na straně klienta (isValidProduct
), kterou nelze převést na SQL.
Řešením je určit obecnou IEnumerable<T> implementaci na straně klienta, která where
má nahradit obecný IQueryable<T>. Provedete to vyvoláním operátoru AsEnumerable .
private bool isValidProduct(Product prod)
{
return prod.ProductName.LastIndexOf('C') == 0;
}
void ConvertToIEnumerable()
{
Northwnd db = new Northwnd(@"c:\test\northwnd.mdf");
Program pg = new Program();
var prodQuery =
from prod in db.Products.AsEnumerable()
where isValidProduct(prod)
select prod;
}
Private Function isValidProduct(ByVal prod As Product) As Boolean
Return prod.ProductName.LastIndexOf("C") = 0
End Function
Sub ConvertToIEnumerable()
Dim db As New Northwnd("c:\northwnd.mdf")
Dim validProdQuery = _
From prod In db.Products.AsEnumerable _
Where isValidProduct(prod) _
Select prod
End Sub