Преобразование SQL в LINQ для объединения

Это мой запрос SQL:

select 
   S.student_No, 
   coalesce(P.Name,'0'),
   P.Surname 
from 
   Person as P 
join 
   Student as S 
       on P.Id = S.Person_Id

Я хочу преобразовать его в LINQ, я сделал это, кроме функции объединения,

from P in cbu.PERSON
join S in cbu.STUDENT on P.ID equals S.PERSON_ID
select new
{
     S.Stundent_No,
     P.Name,
     P.Surname,
};

как я могу использовать coalesce в этом запросе linq


person Taha Karaca    schedule 07.10.2013    source источник


Ответы (1)


P.Name ?? "0". C# имеет встроенный оператор объединения. Даже если вы этого не знали, вы могли бы использовать оператор ?:.

Присоединение не обязательно, кстати. Вы можете просто написать P.Student.Stundent_No (или как там называются свойства).

person usr    schedule 07.10.2013
comment
Я пробовал, но получаю эту ошибку - › Оператор ?? нельзя применять к операндам типа «int» и «string» - person Taha Karaca; 07.10.2013
comment
Как вы думаете, что является причиной этого сообщения об ошибке? Это ошибка компилятора. - person usr; 07.10.2013
comment
я написал вместо P.Name ?? 0,--› PERSON_NAME=P.Name ?? '0' , это работает, но все нулевые поля становятся 48 .. - person Taha Karaca; 07.10.2013
comment
А также если я напишу ИМЯ_ЛИЦА=P.Name ?? ' ' вот так , в это время все нулевые поля становятся 32 - person Taha Karaca; 07.10.2013
comment
Наконец-то это работает, когда я пишу так -› PERSON_NAME=P.Name ?? 0 - person Taha Karaca; 07.10.2013
comment
'' — символьный литерал. Вам нужен строковый литерал (""). - person usr; 07.10.2013
comment
Также кажется странным, что PERSON_NAME является int?! Почему это? Звучит как струна. - person usr; 07.10.2013