2015-06-14 60 views
1

我遇到問題了!我發現有同樣問題的人的分配,但沒有答案幫助我..我試圖從清單<>但我的結果「測試」返回null,爲什麼?從列表中獲取特定項目<>

public MainWindow() 
{ 
    InitializeComponent(); 

    var modelList = new Model2(); 
    modelList.MyPropertyList.Add(new Model1 { Name = "Hej1", MyProperty1 = true }); 

    modelList.MyPropertyList.Add(new Model1 { Name = "Hej2", MyProperty1 = false }); 

    var test = modelList.MyPropertyList.Find(x => x.Name == "Hej1").MyProperty1; 
} 
+0

你怎麼知道它是空的? – dotctor

+0

當我調試的值爲空.. –

+1

請發佈Model2類代碼 –

回答

2

沒有太多的答案 - 但你的代碼 - 應該工作得很好。

void Main() 
{ 
    var modelList = new Model2(); 
     modelList.MyPropertyList.Add(new Model1 { Name = "Hej1", MyProperty1 = true }); 
     modelList.MyPropertyList.Add(new Model1 { Name = "Hej2", MyProperty1 = false }); 
     var test = modelList.MyPropertyList.Find(x => x.Name == "Hej1").MyProperty1; 
     Console.WriteLine (test); 
} 


public class Model1 
{ 
public string Name { get; set; } 
public bool? MyProperty1 { get; set; } 
} 

public class Model2 
{ 
public List<Model1> MyPropertyList { get; set; } 
public Model2() 
{MyPropertyList = new List<Model1>(); 
} 
} 

結果:True

+1

這可以作爲答案有幫助嗎? – dotctor

+0

@dotctor你希望我把它當作評論嗎?它只是表明代碼 - 就像它的簡單性 - 應該能夠工作。我不希望它被選爲答案。 –

+0

如果OP的結果爲空,那麼假設'MyProperty1'將會是'bool?'類型是安全的。 –

-1

相反的find()嘗試使用以下:

var test = modelList.MyPropertyList.SingleOrDefault(model => model.Name == "Hej1"); 

if(test != null) 
{ 
    //-- do something here 
} 
+0

他爲什麼要使用SingleOrDefault? – leAthlon

3

按照OP評論

你怎麼知道它是空? - dotctor 1小時前
當調試值爲null ..丹尼斯 - 埃裏克森1小時前


,你一定要檢查執行行後的值?嘗試添加 `MessageBox.Show(test.ToString());),看看結果是什麼 - dotctor 1小時前


我覺得我的問題的一個恥辱。它是一直工作!這是 我的錯,我讀的價值之前它被宣佈爲「測試」!但是 謝謝!!丹尼斯 - 埃裏克森1小時前


我認爲這個問題是在你調試程序的方式。你已經把一個斷點上線var test = modelList.MyPropertyList.Find(x => x.Name == "Hej1").MyProperty1;和執行這條線前右停止,但你認爲這行已經執行的Visual Studio顯示的test作爲null在自動窗口的價值,這讓你覺得test真的是空的。如果你繼續執行F10或添加一行像MessageBox.Show(test.ToString());只是爲了使上一行執行或以某種方式顯示值test你會發現它不是null

+0

downvoters關心評論? – dotctor

+2

這是一個恥辱downvote沒有評論它的答案!順便說一句,這是正確的答案 –

相關問題