用表达式重构

本文关键字:重构 表达式 | 更新日期: 2023-09-27 18:15:33

我需要重构方法Test1和Test2。

第一个测试方法,其中AddInfo != null:

public List<FileRequest> Test1(long fileId)
{
    return context.FileRequest.Include("AddInfo")
                              .Where(x=>x.FileId = fileId && x.AddInfo != null)
}

第一个测试方法,其中AddInfo == null:

public List<FileRequest> Test2(long fileId)
{
    return context.FileRequest.Include("AddInfo")
                              .Where(x=>x.FileId = fileId && x.AddInfo == null)
}

我试图创建泛化方法,但无法实现。

public List<FileRequest> Test2(long fileId, Expression<Func<AddInfo, bool>> expression)
{
    return context.FileRequest.Include("AddInfo")
                              .Where(x=>x.FileId = fileId && expression)
}

我如何重构我的方法?

用表达式重构

最简单的选择是只使用两个Where调用:

public IQueryable<FileRequest> Test2(long fileId, 
    Expression<Func<FileRequest, bool>> predicate)
{
    return context.FileRequest.Include("AddInfo")
        .Where(x=>x.FileId == fileId)
        .Where(predicate);
}