我有这个独立的标准:
DetachedCriteria students = DetachedCriteria.For(typeof(Submission))
.SetProjection(Projections.Property("ID"))
.Add(Restrictions.In("JicsStudent.HostID", visiblestudents));
visiblestudents是List<string>
。它运行良好,直到我遇到2100参数限制。 visiblestudents由另一个查询填充,该查询在sproc中有一些疯狂的业务逻辑。然后从sproc返回到linq过滤到list<string>
所以我的问题是有没有办法用sproc替换list<string>
来防止SQL错误?到目前为止我在stackoverflow上找到的所有内容都表明我应该使用列表创建一个临时表,然后使用连接,但我的主管更喜欢我没有使用临时表。
答案 0 :(得分:0)
我们找到了一个似乎按照我们想要的方式运行的解决方案;
var n = new object[2];
var o = new IType[2];
DetachedCriteria students = DetachedCriteria.For(typeof (Submission))
.SetProjection(Projections.Property("ID"))
.Add(Expression.Sql("{alias}.StudentUserID in (select UserId from RMS_udfVisibleStudents(?, ?))", n, o));