假设我们有下表:

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)

10-07 16:05
查看更多