这是我原来的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
实例:它返回具有两个成员的匿名类的实例-p
和Eligibility
;匿名类的成员之间没有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/