編輯:我只是跑了一些測試..有趣的是,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