LINQ to SQL添加CASE语句,然后原始字段NOT FOUND



这是我最初的LINQ,非常简单。

var participant = (from p in context.Participants
                       select p);

在我添加案例陈述之前效果良好。

var participant = (from p in context.Participants
                       select new
                       {
                          p,
                          Eligibility =
                          (
                            p.IsEligible == 1 ? "Eligible" :
                            p.IsEligible == 0 ? "Ineligible" : "Pending"
                          )
                      });

在GridView DataBind()方法上,它抛出异常said pID(在参与者表中)未找到。我在调试模式下检查SQL命令文本,它确实有Participant对象。请帮忙!

这是因为您的查询不再返回Participant的实例:它返回具有两个成员(pEligibility)的匿名类的实例;匿名类的成员中没有pId,因此出现了您看到的错误。

我会尝试绑定到p.pId,或者更好的是,给p一个更有意义的名称,比如Participant,如下所示:

select new {
    Participant = p,
    Eligibility = ... // and so on
}

这样你的装订就更易读了。

您创建了一个由两个成员组成的匿名对象;"p"(参与者)和"资格"(字符串)。

如果。绑定可以处理嵌套绑定,然后绑定到"p.Id"等。更好的方法是:为您想要的成员创建一个视图模型。

相关内容

最新更新