2015-09-25 75 views
0

我所試圖做的是,找到一個對象名單C#查找對象

Log q = logs.Find(x => (x.dnsq.queryID.Contains(queryid))); 

然而,當我這樣做,我得到這個錯誤

x.dnsq內。 queryID = 'x.dnsq.queryID' 扔 類型的異常「System.NullReferenceException

Log類看起來像這樣

class Log : LogCtrl 
{ 
    public int id { set; get; } 
    public string source { set; get; } 
    public string destination { set; get; } 
    public string protocol { set; get; } 
    public double time { set; get; } 
    public string info { set; get; } 
    public DNSresponse dnsr { set; get; } 
    public DNSquery dnsq { set; get; } 
} 
+0

你的對象之一爲空或dnsq爲空或queryID爲null – Steve

回答

2

聽起來像x或x.dnsq或x.dnsq.queryId對於日誌中的至少一個項目爲空。你可以做你的聲明檢查此如下:

Log q = logs.Find(x => (x != null && x.dnsq != null && x.dnsq.queryID != null && x.dnsq.queryID.Contains(queryid))); 
+0

或用新的'.'操作 –

+0

嗯,我使用的調試?檢查日誌列表,我知道它包含一個條目,其中dnsq.queryID等於我正在搜索的內容。 –

+1

@Mathias_並不重要,如果列表包含它或沒有,只要其中一個字段爲空它將拋出空例外 – Steve