【发布时间】:2020-08-31 06:53:26
【问题描述】:
我正在努力为我偶尔遇到的一些事情找到最佳实践,每次我都觉得这不是实现我想做的最优雅、最好和最肯定有效的方法.
考虑一下:
型号:
public class User
{
public string firstName {get; set;}
public string lastName {get; set;}
public string middleName {get; set;}
public string someName {get; set;}
// etc... up to, let's say 20 inputs
}
html:
<input type="text" name="firstName">
<input type="text" name="lastName" disabled>
<input type="text" name="middleName" disabled>
<input type="text" name="someName" disabled>```
控制者:
private dbcontext db = new dbcontext();
List<User> users = db.Users.Where( x => firstName != null && x.firstName == fisrtName ||
lastName != null && x.lastName == lastName ||
// and so on, and so on...
现在,另一端的一些人可以选择启用上述输入并使用传递的参数为某些用户查询数据库。
我希望现在您已经明白我在这里难以理解的内容了。我喜欢只使用已启用的变量并将它们组合成 AND 查询而不是 OR。我知道,我知道 - && 用于这件事,但这并不像我想要的那样工作。
我不想使用 if 语句检查每个变量是否为 null,然后为可能发生的每个场景创建查询。
如果那是转发,我很抱歉,但我找不到答案。
【问题讨论】:
-
不应该是
x => (firstName == null || x.firstName == firstName) && (lastName == nul || x.LastName == lastName) && .... -
你真的找不到答案吗?这是经常被问到的。尝试在搜索中包含“谓词构建器”。
标签: c# html entity-framework linq model-view-controller