LINQ to SQL Добавьте CASE STATEMENT, тогда исходное поле NOT FOUND - PullRequest
2 голосов
/ 29 февраля 2012

Вот мой оригинальный 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 (в таблице участников) не найдено.Я проверяю текст команды SQL в режиме отладки, у него есть объект Участник.Пожалуйста, помогите!

Ответы [ 2 ]

4 голосов
/ 29 февраля 2012

Это потому, что ваш запрос больше не возвращает экземпляры Participant: он возвращает экземпляры анонимного класса с двумя членами - p и Eligibility;среди членов анонимного класса нет pId, поэтому вы видите ошибку.

Я бы попробовал привязаться к p.pId, а еще лучше дать p более значимое имя,скажем, Participant, вот так:

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

Тогда ваша привязка будет более читабельной.

0 голосов
/ 29 февраля 2012

Вы создали анонимный объект, состоящий из двух членов;«р» (Участник) и «Право на участие» (строка).

Если.Привязка может лучше обрабатывать вложенную привязку, затем привязку к p.Id и т. Д.: Создайте модель представления для нужных вам членов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...