2

你好,我有这个问题...

List<VisitorsVo> lstVisitors = new List<VisitorsVo>();
            var predicate = ReturnPredicateForVisitors(p_htVisitor);
            if (predicate != null)
            {
                lstVisitors = (from n in context.TBL_VISITORs.Where(predicate)
                               select new VisitorsVo
                               {
                                   VisitId = n.VISIT_ID,
                                   VisitorName = n.VISITOR_NAME,
                                   ResidentDuration = n.ENQUIRY_PATIENT_DURATION.Split(';')[0] + " " + n.ENQUIRY_PATIENT_DURATION.Split(';')[1],
                               }).ToList();
            }

但我收到无法识别的表达式节点 ArrayIndex 错误我该如何克服...这里我正在检查使用谓词的条件...。

4

2 回答 2

4

看起来这是 LINQ to Entities,而不是普通的 LINQ。您context是实体框架还是 LINQ to SQL 上下文?

如果是这样,则 LINQ to Entities/SQL 将尝试将此表达式转换为 SQL,如果它包含它不知道的函数调用或没有 SQL 等效函数,则它无法执行此操作。

我的钱用于使用Split();我敢打赌 LINQ to Entities 会对此感到厌烦。

您可以做的是修改您的查询以摆脱Split(),然后您可以查询 lstVisitors (它现在只是一个内存数据结构,它与实体框架没有链接)并Split()在那里使用。

于 2013-01-03T10:55:07.387 回答
0

如果您需要拆分一列,这意味着您可以将该数据保存在两个单独的列中。

如果我是你,我会去数据库设计并将 ENQUIRY_PATIENT_DURATION 转换为 2 列并正确执行。您的代码似乎很容易出错。

于 2013-01-03T15:17:27.747 回答