我在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值则设置它来自数据库的值。
有解决方案吗?任何帮助将不胜感激!
提前谢谢!
答案 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