Dar*_*rcy 3 c# asp.net-mvc where-clause linq-to-sql
基本上我想在我的linq to sql语句中有一个if-else语句.
var query = from d in database
if(x == y) {
where d.Attr = x
}
else {
where d.Attr = y
}
select d;
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
假设,你的意思==,而不是=:
from d in database
where (x == y && d.Attr == x) ||
(x != y && d.Attr == y)
select d;
Run Code Online (Sandbox Code Playgroud)
这不是一样的
var query = from d in database
where d.Attr == y
select d;
Run Code Online (Sandbox Code Playgroud)
您可以使用where子句中的简单条件处理您的情况(或类似的,更现实的情况).对于更复杂的查询,您可以使用扩展方法来构建非常容易实现条件的查询,或使用PredicateBuilder创建任意复杂的条件.
var query = db.Table;
if (x == y)
{
query = query.Where( d.Attr == z );
}
else
{
query = query.Where( d.Attr == t );
}
var predicate = PredicateBuilder.True<Foo>()
.And( f => f.Attr == y )
.And( f => f.Attr == x )
.Or( f => f.Attr == z );
var query = db.Foo.Where( predicate );
Run Code Online (Sandbox Code Playgroud)