LINQ-to-SQL匿名类型具有null值的问题

时间:2011-09-12 21:24:21

标签: asp.net linq-to-sql c#-4.0

我在LINQ-to-SQL和匿名类型方面遇到了一些问题。

我有gridview(它并不重要,但它是Telerik的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时,所有内容都会因以下错误而崩溃:“对象引用未设置为对象的实例”,这解释了所有内容,但不能帮助我解决问题

我想做的(如果可能的话)是以某种方式检查空值,如果它是null我想将“NazivKontakta”设置为字符串值“Empty”,如果它不是null值则设置它来自数据库的值。

有解决方案吗?任何帮助将不胜感激!

提前谢谢!

3 个答案:

答案 0 :(得分:2)

我怀疑这实际上导致了这个问题:

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

即。不NazivKontakta为空,但t.Kontakt为空。毕竟,如果没有任何内容解除引用NazivKontaka,那么应该没有问题。

在您的查询中尝试此操作:

NazivKontakta = t.Kontakt == null ? "" : t.Kontakt.Ime + " " + t.Kontakt.Prezime

答案 1 :(得分:1)

尝试

NazivKontakta = t.Kontakt =! null ? 
                      t.Kontakt.Ime + " " + t.Kontakt.Prezime : 
                      string.Empty

答案 2 :(得分:0)

我会编写一个简单的IsNull函数或者使用IsDBNull来检查它是否为null返回string.Empty