gpt4 book ai didi

c# - Linq to SQL 多条件 where 子句

转载 作者:太空狗 更新时间:2023-10-29 17:28:48 26 4
gpt4 key购买 nike

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

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

但现在我正在尝试根据 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();
}

我如何检查每个过滤器是否仅在它们包含值时才添加 where 子句?

最佳答案

您没有理由不能通过多次调用 .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();
}

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

关于c# - Linq to SQL 多条件 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com