tôi thấy các chức năng sau đây trong một bài viết cho phép một để đặt hàng dữ liệu sử dụng một biểu thức tổng quát:Vấn đề với chức năng 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);
}
Khi tôi cố gắng sử dụng chức năng này tôi nhận được một lỗi nói rằng "Các loại hoặc tên namespace "TKey' không thể được tìm thấy (là bạn thiếu một chỉ thị sử dụng hoặc tham khảo một hội?)" tôi đang làm một cái gì đó ngớ ngẩn ở đây nhưng tôi không thể hình dung nó ra
Edit:..
Sau khi nghiên cứu thêm một chút, tôi nghĩ rằng vấn đề của tôi là xây dựng Expr ession mà tôi vượt qua nó. Có thể xây dựng một biểu thức có thể chứa các loại khác nhau không? Giả sử tập dữ liệu của tôi có chuỗi, int và bool và tôi muốn sử dụng hàm chung ở trên để sắp xếp theo bất kỳ mục nào. Làm thế nào để tôi làm điều này?
Tôi có điều này làm việc bây giờ:
if (IsString)
{
Expression<Func<T, string>> expString = ...;
// call orderBy with expString
}
else if (IsInt)
{
Expression<Func<T, int>> expInt;
// call orderBy w/ expInt
}
:
Tôi muốn một cái gì đó như:
Expression<Func<T, {something generic!}>> exp;
if (IsString)
exp = ...;
else if (IsInt)
exp = ...;
:
// call orderBy with exp
Điều này có vẻ ổn. Bạn sử dụng phương pháp này như thế nào? Bạn đã thêm nó vào một lớp tĩnh? – BFree