Linq to Entities Where子句比较值可以是int或字符串

时间:2016-12-01 06:28:25

标签: c# linq-to-entities where-clause

我有一个下拉列表,可以提供数字或单词ANY。我需要创建一个包含WHERE子句的LINQ SELECT,它可以模仿以下SQL:

var p varchar2(3);

select ... from ...   
where ( 
 ( (:p = 'ANY') and id  in (select distinct id from Ids) )
 or
 (:p='1' and id = 42)
)  

ps:我将使用表达式树来处理OR方面: - )

1 个答案:

答案 0 :(得分:0)

这样的事情?

string input = /***/
var result = Context.Entities
                    .Where(ent => (input == "ANY" 
                                      && Context.UserIds.Select(usr => isr.Id)
                                                        .Distinct()
                                                        .Contains(ent.Id))
                                   || (input == "1" && ent.Id == 42))
                    .Select(ent => /***/);
免责声明:从内存写入,可能包含编译时错误(拼写错误等)