Проблема анонимных типов в LINQ-to-SQL с нулевым значением - PullRequest
0 голосов
/ 13 сентября 2011

У меня проблемы с LINQ-to-SQL и анонимными типами.

У меня есть gridview (это не так важно, но это TeleGrid RadGrid), который имеет следующий источник данных:

TSEntities db = new TSEntities();

        int idFirma = Convert.ToInt16(Request.QueryString["idt"]);

        var ticketList = (from t in db.Ticket 
                          where t.idFirma == idFirma
                          select t).ToList();


        gvTicketi.DataSource = from t in ticketList
                               where t.idFirma == idFirma
                               orderby t.idTicket, t.RedniBroj, t.DatumPrijave
                               select new { t.idTicket, t.idFirma, t.idKontakt, t.idManager, t.idNadredeniTicket, TicketNumber = t.idNadredeniTicket + "-" + t.RedniBroj, t.Biljeske, t.DatumDo, t.DatumPrijave, t.OpciPrioritet, t.Opis, t.OpisZatvoren, t.Prioritet, t.Status, t.Tip, t.VrstaPrijave, t.Zatvoren, NazivKontakta = t.Kontakt.Ime + " " + t.Kontakt.Prezime };

Все отлично работает, когда NazivKontakta не равно NULL, но когда NULL, все вылетает со следующей ошибкой: «Ссылка на объект не установлена ​​на экземпляр объекта», которая все объясняет, но не помогает мне разобраться .

Что я хотел бы сделать (если это возможно), так это как-то проверить наличие нулевого значения, и если оно равно нулю, я бы хотел установить «NazivKontakta» в строковое значение «Пусто», и если это не нулевое значение, чтобы установить это к значениям из базы данных.

Есть ли решение для этого? Любая помощь будет оценена!

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 13 сентября 2011

Я подозреваю, что именно это и вызывает проблему:

 t.Kontakt.Ime + " " + t.Kontakt.Prezime

т.е. не NazivKontakta равен нулю, но t.Kontakt равен нулю. В конце концов, если ничто не разыменовывает NazivKontaka, не должно быть проблемы.

Попробуйте это в вашем запросе:

NazivKontakta = t.Kontakt == null ? "" : t.Kontakt.Ime + " " + t.Kontakt.Prezime
1 голос
/ 13 сентября 2011

Попробуйте

NazivKontakta = t.Kontakt =! null ? 
                      t.Kontakt.Ime + " " + t.Kontakt.Prezime : 
                      string.Empty
0 голосов
/ 13 сентября 2011

Я написал бы простую функцию IsNull или использовал бы IsDBNull, чтобы проверить, и если это нуль, вернуть строку. Пустой

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