假设我们有下表:
Person:
PersonID,
Name,
Age,
Gender
并且,我们提供了搜索功能,允许用户根据年龄和/或来搜索表格。
编写SQL(或LINQ)查询的棘手部分是用户可以选择搜索两个字段,或者任何一个字段,或者不搜索任何字段。如果他想搜索所有内容,则只需将文本框留空。
这样做的逻辑可以编写如下:
var p;
if(Name_TextBox=='')
{
p=from row in person
select row ;
}
else
{
p= from row in person
where row.Name=Name_TextBox
select row ;
}
// repeat the same for age
现在过了一会儿,代码变得非常冗长和困惑...如何将上面的内容压缩为而不是if-else 的单个查询?
最佳答案
我在SQL中使用过的一种替代方法也可以在Linq中实现,它是
var p = from p in Person
where p.Name == Name_TextBox || Name_TextBox == String.Empty
select p;
(请注意,您的“linq”使用的是SQL语法,该语法不会编译。此外,如果不直接分配值,也无法像声明的那样声明var)