Linq to SQL多条件where子句

Ste*_*ieB 9 c# sql linq

目前我正在检索我的结果如下:

public List<claim> GetClaims()
{
    return _db.claims.OrderBy(cl => cl.claimId).ToList();
}
Run Code Online (Sandbox Code Playgroud)

但是现在我想在listview上面添加基于过滤器的8个条件where子句.

所以我变成了:

public List<claim> GetFilteredClaims(string submissionId, string claimId,
                                     string organization, string status,
                                     string filterFromDate, string filterToDate,
                                     string region, string approver)
{
    return _db.claims.Where(cl => cl.submissionId == 5).ToList();
}
Run Code Online (Sandbox Code Playgroud)

如何检查每个过滤器以仅在包含值时添加where子句?

kev*_*v22 33

您没有理由不能通过.Where多次调用来过滤结果.由于LINQ to SQL的延迟执行,它将在一个SQL语句中执行:

public List<claim> GetFilteredClaims(string submissionId, string claimId,
                                     string organization, string status,
                                     string filterFromDate, string filterToDate,
                                     string region, string approver)
{
    IQueryable<claim> filteredClaims = _db.claims;

    if (!string.IsNullOrWhiteSpace(submissionId))
    {
        filteredClaims = filteredClaims.Where(claim => claim.submissionId == submissionId);
    }

    if (!string.IsNullOrWhiteSpace(claimId))
    {
        filteredClaims = filteredClaims.Where(claim => claim.claimId == claimId);
    }

    ...

    return filteredClaims.ToList();
}
Run Code Online (Sandbox Code Playgroud)

如果您需要添加OR条件,可以查看PredicateBuilder.