几条linq查询的优化,求助!~~
大家好,这是一个linq查询的代码,部分内容已封装。
public BaseOrder[] GetAllDocument(DateTime dtBegin, DateTime dtEnd)
{
QswmDataContext qdc = this.CreateDataContext();
var linq = from lx in qdc.GetTable<BaseOrder>()
where lx.editDate.Value.Date >= dtBegin.Date &&
lx.editDate.Value.Date <= dtEnd.Date
select lx;
//根据权限过滤
var linq1 = linq.PowerFilter<BaseOrder>();
return linq1.ToArray();
}
//权限过滤的方法
public static IQueryable<T> PowerFilter<T>
(this IQueryable<T> source) where T : IShare
{
var users = GetShareUsers("权限分类"); //获取拥有权限的用户,类型为string[] length:大约有800;
var cur = Common.User.LoginName; // 当前用户
var salesUser = Common.SalesUser.LoginName; //当前业务员
var q= from c in source
where c.CreateUser == cur //createUser:创建人
|| c.SalesUser == salesUser //SalesUser:业务员
|| c.ShareUser.Contains(cur) //ShareUser:共享用户
|| users.Contains(c.salesUser) //其它有权限的用户
|| users.Contains(c.CreateUser)
select c;
return q;
}
程序是别人的程序,维护是我在做;
查询性能很低,发现在PowerFilter中花费大量的时间;
最后通过调试艰难的发现生成的sql会出现大量的 in(....),如:
select ... from BaseOrder
where CreateUser in ('u1','u2','u3'..... 'u800') or salesUser in ('u1','u2','u3'..... 'u800') 然**,我不太懂linq;
该如何优化呢? 谢谢帮助!