LINQ запрос присоединяется - PullRequest
0 голосов
/ 27 января 2011

Когда я использую приведенный ниже код для получения информации, отображается ошибка ..

var mails = from m in entity.mailboxes
            join p in entity.ordinary_user_profile_info on m.from_id equals p.user_id
            select new MailList
            {
                mid = m.m_id,
                mfrom = m.**from_id,** // Error occours here
                mfomname = p.username,
                msubject = m.subject
            };

Ошибка:

"int? Mailbox.from_id"

Не удается неявно преобразовать тип 'int?' в 'int'. Существует явное преобразование (вам не хватает приведения?)

Я объявил m_id и from_id как int в БД, а также в классе MailList.

Ответы [ 3 ]

5 голосов
/ 27 января 2011

Я предполагаю, что это должно это исправить.

, поэтому int? - это Обнуляемый тип , вам нужно либо

(1) Определить MailList.mfrom как int? ИЛИ
(2) Преобразовать из int?int, например ниже :

var mails = from m in entity.mailboxes
            join p in entity.ordinary_user_profile_info on m.from_id equals p.user_id
            select new MailList
            {
                mid = m.m_id,
                **mfrom = m.from_id.HasValue ? m.from_id.Value : 0**
               //this is saying is, since the int is nullable, 
               //if it has a value, take it, or return 0
                mfomname = p.username,
                msubject = m.subject
            };

Обновление


После небольшого дополнительного исследования, похоже на @ abatishchev решение с оператором null-coalescing - правильный путь, согласно msdn, и, как @ Konstantin в комментариях, упомянутых Nullable.GetValueOrDefault (T) также правильнее.

4 голосов
/ 27 января 2011
var mails = from m in entity.mailboxes
            join p in entity.ordinary_user_profile_info on m.from_id equals p.user_id
            select new MailList
            {
                mid = m.m_id,
                mfrom = m.from_id ?? 0,
                mfomname = p.username,
                msubject = m.subject
            };
0 голосов
/ 27 января 2011

Попробуйте это:

var mails = from m in entity.mailboxes
            join p in entity.ordinary_user_profile_info on m.from_id equals p.user_id
            select new MailList
            {
                mid = m.m_id,
                mfrom = (int)m.from_id,  // Error occours here
                mfomname = p.username,
                msubject = m.subject
            };
...