1

有没有人知道这个错误是什么意思以及如何解决它?我所有的研究都是空白,我可以看到如何在 MSDN 上设置它,但它并没有以向我解释问题所在的方式解释它。如果我删除了一些 LINQ 查询来设置 viewbag 项目,那么它似乎可以解决它,但是当我设置新的查询并将它们传递到我的视图中以生成 MVCMailer 的邮件时,它又回来了。不确定它是否是 viewbag 问题,或者只是我调用了太多 linq 查询来生成它们以传递给视图。

我很困(再次).......

干杯,史蒂夫。

DbLimitExpression 需要一个集合参数。参数名称:argument 描述:当前web请求执行过程中发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ArgumentException:DbLimitExpression 需要一个集合参数。参数名称:argument

代码示例如下:

            var VBSalutation = from A in context.Salutations
                where A.SalutationId == policytransaction.SalutationId
                select A.SalutationName;
        ViewBag.Salutation = VBSalutation.FirstOrDefault();

这对各种参数重复,然后传递给视图。

4

2 回答 2

2

好吧,我遇到了类似的问题并解决了它。问题出在 WHERE 子句中:左侧等号 (=) 符号的数据类型与右侧的数据类型不匹配。所以在你的场景中:

where A.SalutationId == policytransaction.SalutationId

A 的 SalutationID 可能是一个 INT,policytransaction 的 SalutationId 可能是一个字符串(这就是我的情况)。

我通过将 policytransaction.SalutationId 分配给 Int 变量并使用它来解决它:

int myIntVariable = Convert.ToInt16(policytransaction.SalutationId);
...//some code here
where A.SalutationId == myIntVariable;

另请注意,您不能直接在 Linq 中直接转换变量,否则您将收到错误“LINQ to Entities 无法识别该方法”。您必须使用临时变量,然后应用 where 子句。

于 2012-06-09T05:05:09.203 回答
0

尝试ViewBag.Salutation = VBSalutation.SingleOrDefault();

于 2012-02-28T11:32:35.947 回答