gpt4 book ai didi

c# - 参数数量未知的动态 Where 子句

转载 作者:行者123 更新时间:2023-11-30 20:50:37 25 4
gpt4 key购买 nike

我已经搜索了我的问题的答案,但找不到满足我需要的答案。

以下两个代码片段返回相同的东西,我没有偏好使用哪一个,我只是将两者都包括在内,以防有人回答我的问题

private List<MyClass> GetMyClass(string name, string city, string state, string zip)
{
using (MyEntities ctx = new MyEntities())
{
var results = from a in ctx.MyEntity
where (a.Name == name &&
a.City == city &&
a.State == state &&
a.ZIP == zip)
select a;

return results.ToList();
}
}

private List<MyClass> GetMyClass(string name, string city, string state, string zip)
{
using (MyEntities ctx = new MyEntities())
{
var results = ctx.MyEntity.Where(a => a.Name == name)
.Where(a => a.City == city)
.Where(a => a.State == state)
.Where(a => a.ZIP == zip)
.Select(a => a);

return results.ToList();
}
}

为了这个示例的目的,假设我有一个搜索屏幕,它要求用户输入名称和城市; State 和 ZIP 是可选的。查询必须至少按这两个字段和任何其他字段(如有必要)进行搜索。

显然,对于我上面的示例,如果用户仅按名称和城市进行搜索,他们将不会获得任何结果,因为查询将尝试匹配 State == null 和 ZIP == null,因为未提供这两个参数.

如何重写此代码以仅搜索已提供参数的字段?

最佳答案

你可以把它们链接起来,像这样:

var results = ctx.MyEntity.AsQueryable();

if(name != null)
results = results.Where(a => a.Name == name);

// ... snip ...

if(zip != null)
results = results.Where(a => a.ZIP == zip)

return results.ToList();

关于c# - 参数数量未知的动态 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22415231/

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