【问题标题】:Repository pattern how to define an OrderBy存储库模式如何定义 OrderBy
【发布时间】:2013-01-28 11:14:31
【问题描述】:

我有一个非常通用的存储库类,它没有专门引用我的表。下面显示的是获取表中所有项目的功能之一。我想做的是扩展它以便可以订购结果。有没有办法传入谓词/表达式或类似的东西?

public IQueryable<T> All<T>() where T : class
{
    return _context.Set<T>().AsQueryable();
}

【问题讨论】:

    标签: entity-framework c#-4.0 linq-to-entities


    【解决方案1】:

    只需对所有实体使用Queryable.OrderBy 方法:

    fooRepository.All().OrderBy(foo => foo.Bar)
    

    如果要添加带有谓词的方法:

    public IQueryable<T> AllOrderedBy<T,TKey>(Expression<Func<T,TKey>> predicate) 
        where T : class
    {
        return _context.Set<T>().OrderBy(predicate);
    }
    

    顺便说一句,DbSet&lt;T&gt; 实现了IQueryable&lt;T&gt;,所以你不需要调用AsQueryable()

    【讨论】:

    • 存储库不应返回IQueryable
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多