Widziałem następującą funkcję w delegowania który pozwala zamówić dane przy użyciu rodzajowe wyrażenie:Problem z funkcją Generic LINQ OrderBy
public static IOrderedQueryable<T> OrderBy<T, TKey>(
this IQueryable<T> source, Expression<Func<T, TKey>> func, bool isDescending) {
return isDescending ? source.OrderByDescending(func) : source.OrderBy(func);
}
Kiedy próbuję użyć tej funkcji pojawia się błąd mówiący „The typ lub nazwa przestrzeni nazw „TKey” nie można odnaleźć (czy brakuje using dyrektywa lub odwołania do zestawu?)”robię coś głupiego tutaj, ale nie mogę zrozumieć to
Edycja:..
Po wykonaniu nieco więcej badań, myślę, że moim problemem jest budowanie Expr epoka, którą do niej przechodzę. Czy można zbudować wyrażenie, które może zawierać różne typy? Powiedzmy, że mój zbiór danych ma ciąg, int i bool i chcę użyć powyższej funkcji ogólnej do sortowania według dowolnego z elementów. Jak mam to zrobic?
mam to działa teraz:
if (IsString)
{
Expression<Func<T, string>> expString = ...;
// call orderBy with expString
}
else if (IsInt)
{
Expression<Func<T, int>> expInt;
// call orderBy w/ expInt
}
:
chcę coś takiego:
Expression<Func<T, {something generic!}>> exp;
if (IsString)
exp = ...;
else if (IsInt)
exp = ...;
:
// call orderBy with exp
Wydaje się to w porządku. W jaki sposób używasz tej metody? Czy dodałeś go do klasy statycznej? – BFree