这是我原来的LINQ,非常简单。

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


正常工作,直到我添加case语句为止。

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


在GridView DataBind()方法上,它引发未找到pID(在Participants表中)的异常。
我在调试模式下检查SQL命令文本,它确实具有Participant对象。
请帮忙!

最佳答案

这是因为查询不再返回Participant实例:它返回具有两个成员的匿名类的实例-pEligibility;匿名类的成员之间没有pId,因此会出现错误。

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

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


这样您的绑定将更具可读性。

关于c# - LINQ to SQL添加CASE STATEMENT,然后找不到原始字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9502650/

10-10 01:05