2011-09-12 6 views
0

LINQ-to-SQLと匿名の型にいくつか問題があります。LINQ-to-SQLの匿名型の問題(null値)

私は、次のデータソースを持っているの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でないときすべてが正常に動作しますが、ヌルすべてがでクラッシュしたときに"オブジェクト参照がオブジェクトのインスタンスに設定されていません"というエラーがありますが、すべてを説明していますが、それを解決するのには役立ちません。

私は(可能であれば)ヌル値をどうにかしてチェックし、ヌルなら "NazivKontakta"を文字列値 "Empty"に設定したいと思います。それをデータベースの値に設定します。

解決方法はありますか?どんな助けもありがとう!

ありがとうございます!

答えて

2

をお試しください:ヌルさ

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

すなわちないNazivKontakta、しかしt.Kontaktがnullであること。結局のところ、逆参照が何もない場合はNazivKontaka、問題はないはずです。

クエリでこれを試してみてください:

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

これは魅力的に機能しました!ありがとうございました!それは私が探していたものですが、何を探したらいいのか分かりませんでした。このように書かれた条件に特定の名前が付いている場合はどうしますか? –

+1

@Hrvach:これは単なる通常の条件演算子です。ここでLINQに適用されますが、v1のC#にあります。 http://msdn.microsoft.com/en-us/library/ty67wk28.aspx –

1

私はそれが実際に問題の原因となっている。このだ疑い

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

はありがとうございます!これも動作します! –

0

私は、単純なIsNull関数を記述するかチェックするためにIsDBNullを使用して、それがnullの戻りがある場合はString.Emptyの