Странная ошибка запроса LINQ - PullRequest
1 голос
/ 30 мая 2011

Я пытаюсь привязать данные к этому запросу.

 cboTypeStage.DataSource = 
        (
            from ts in tsRepository.GetTable()
            select new { IdTypeStage = Convert.ToDecimal(-1), Description = "Aucun", NomFormEval = "-" }
        )
        .Union
        (
            from ts in tsRepository.GetTable()
            join o in oRepository.GetTable() on ts.IdOrthEvalFormulaire equals o.IdOrthEvalFormulaire
            where (ts.IdProgramme == Convert.ToDecimal(Session["selectedProg"]))
            select new { IdTypeStage = ts.IdTypeStage, Description = ts.Description, NomFormEval = ((o.Nom == null) ? "Aucun" : o.Nom) }
        );

Но я не могу заставить его работать.я получаю следующую ошибку:

Невозможно привести объект типа 'System.Data.Linq.SqlClient.SqlNew' к типу 'System.Data.Linq.SqlClient.SqlValue'

Я хочу преобразовать этот SQL-запрос в LINQ

SELECT -1 AS IdTypeStage, 'Aucun' AS Description, '-' AS NomFormEval
UNION
SELECT ts.IdTypeStage AS IdTypeStage, ts.Description AS Description, ISNULL(eref.Nom, 'Aucun') AS NomFormEval FROM TypeStage AS ts
LEFT OUTER JOIN OrthEvalFormulaire AS eref ON eref.IdOrthEvalFormulaire = ts.IdEvalFormulaire 
WHERE IdProgramme = @IdProgramme

Есть идеи по поводу ошибки?

Спасибо.

Ответы [ 3 ]

1 голос
/ 30 мая 2011

Я думаю, вам нужно использовать Concat, как описано в ответах на этот вопрос - Вставка дополнительных данных в результат linq, но не в источник данных или ожидание отправки изменений в объект контекста


Кроме того, имейте в виду, что

from ts in tsRepository.GetTable()
        select new { IdTypeStage = Convert.ToDecimal(-1), Description = "Aucun", NomFormEval = "-" }

даст вам одну дополнительную строку "aucun" для каждой строки в хранилище - я предполагаю, что это не то, что выхотел.

1 голос
/ 30 мая 2011
  • Попробуйте использовать Concat() вместо Join()
  • Попробуйте создать не анонимные типы, а строго типизированные
0 голосов
/ 30 мая 2011

Используйте инструмент, такой как LINQER, для преобразования SQL в LINQ. Инструменты гораздо лучше, чем мы: -)

См. http://www.sqltolinq.com.

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