0

我如何将一个或多个 lambda order by 子句传递给方法并将其附加到 linq 到实体查询,如下所示?我不想传入我之前讨论过的字符串,它应该是用于可维护性/重构/编译支持的 lambda 表达式。

public IList<UserRating> GetUserRatings(int userId, IPager pager, IOrderedQueryable<UserRating> orderBy)
{
    return _userRatingRepository.Table.Where(a => a.UserId == userId).Skip(pager.Skip).Take(pager.PageSize). /* orderBy goes here */ .ToList();
}
4

1 回答 1

1

以下是我的做法:

public IList<UserRating> GetUserRatings<TKey>(
    int userId, 
    IPager pager, 
    Func<UserRating, TKey> orderBy)
{
    return _userRatingRepository
        .Table
        .Where(a => a.UserId == userId)
        .Skip(pager.Skip)
        .Take(pager.PageSize)
        .OrderBy(orderBy)
        .ToList();
}

用法:

GetUserRatings(1,pager, u=> u.Id)
于 2013-07-28T01:50:57.293 回答