2011-05-09 82 views
0

嗨!LINQ to SQL条件

我想做一个处理两个不同条件的LINQ to 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; 

    } 
+0

任何原因,你正在使用匿名类型的单个值? – 2011-05-09 08:56:28

回答

0
var persons = from p in db.Person 
select new      
{       
    p.name, 
    p.age 
}; 

if (age > 0) // or declare a bool to check age needs to be filtered. 
{ 
    persons = persons.Where(p => p.age == age); 
} 
+0

使用此查询,您可以获得数据库中的所有人员。性能可能不好。 – edze 2011-05-09 09:01:24

+0

性能目前尚未被指定为问题;这将是我首选的可读性/可维护性方法,直到它。 – Jaymz 2011-05-09 09:03:16

+0

感谢这帮了我! – user473104 2011-05-09 09:52:33

1
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; 

} 

如果传递null这个功能,你会得到任何年龄的人。

+0

这与SQL语句age = ISNULL(@ age,age) – jaywayco 2011-05-09 08:59:28

+0

相同,其中p.age ==(age.HasValue?age.Value:p.age) – edze 2011-05-09 11:32:52