C# LINQ到SQL条件

C# LINQ到SQL条件,c#,linq-to-sql,C#,Linq To Sql,嗨 我想发出一个LINQ到SQL的请求,该请求处理两种不同的情况。下面的函数中列出了其中之一。我希望在下面的函数中包含的条件是,我希望能够请求任何年龄的人。如何重写此函数以使其处理1的请求。特定年龄的人或2:任何年龄的人 public IQueryable test(int age) { var persons = from p in db.Person where p.age = age

我想发出一个LINQ到SQL的请求,该请求处理两种不同的情况。下面的函数中列出了其中之一。我希望在下面的函数中包含的条件是,我希望能够请求任何年龄的人。如何重写此函数以使其处理1的请求。特定年龄的人或2:任何年龄的人

 public IQueryable test(int age)

    {

        var persons = from p in db.Person

                      where p.age = age

                      select new

                      {

                          p.name

                      };



        return persons;

    }
公共可撤销测试(可撤销年龄)
{ 
var persons=从p开始,单位为db.Person
其中p.age=age.HasValue?age.Value:p.age
选择新的
{
p、 名字
};
返回人员;
}
如果将
null
传递给此函数,您将得到任何年龄的人

 public IQueryable test(int age)

    {

        var persons = from p in db.Person

                      where p.age = age

                      select new

                      {

                          p.name

                      };



        return persons;

    }
  • 写两个查询
  • 使用

  • 您为什么要对单个值使用匿名类型?这与SQL语句age=ISNULL(@age,age)相同,其中p.age==(age.HasValue?age.value:p.age)通过此查询始终可以从数据库中获取所有人员。可能不利于性能。性能目前尚未被指定为问题;这将是我首选的可读性/可维护性方法,直到它被使用为止。
    public IQueryable test(Nullable<int> age)
    { 
          var persons = from p in db.Person
    
                      where p.age = age.HasValue ? age.Value : p.age
    
                      select new
    
                      {
    
                          p.name
    
                      };
    
        return persons;
    
    }