编辑:我只是跑了一些测试..有趣的是,perf对于IN与OR来说非常相似,所以除了看起来很丑的SQL之外,它们的表现几乎相同。 我编辑了我的回复以反映这一点。
“在”样式查询是不是EF(还)固有支持 我相信你想什么来完成已经覆盖here
你可以得到的是这样的匹配实体:
var roleNamesToMatch = {"Admin","Manager","Associate"};
var expression = BuildOrExpression<Role, name>(r => r.Name, roleNamesToMatch);
var matchingRoles = context.RoleSet.Where(expression);
基于表达式树,EF将创建SQL它看起来是这样的:
select r.ID,r.Name from t_Role where r.Name = 'Admin' OR r.Name = 'Manager'
OR r.Name = 'Associate'
代替邻˚F什么人通常期望
select r.ID,r.Name from t_Role where r.Name in ('Admin','Manager','Associate')
。任何()似乎并不在LINQ to是有效的实体....但是这看起来像我的:你可以用
Any()
方法做一个存在性检查相结合的角色ID检查希望完成...... – 2009-07-24 19:09:02