2010-03-13 70 views
3

我定義我的課:與比較項目值的問題

public class Host 
{ 
    public string Name; 
} 

然後一個強類型的字典:

Dictionary<string, Host> HostsTable; 

然後我嘗試比較值:

if (HostsTable.Values.Where(s => s.Name == "myhostname") != null) { doSomething } 

問題是,沒有發現任何東西,即使我確定該項目在列表中。我做錯了什麼?

回答

5

Where()返回另一個IEnumerable<Host>,所以您對null的測試不檢查是否存在匹配的項目。

我想這是你正在嘗試做的:

if(HostsTable.Values.Any(s => s.Name == "myhostname")) { doSomething } 

Any()回報true如果有符合條件的任何項目。

1

試試這個:

if (HostsTable.Values.Any(s => s.Name == "myhostname")) { doSomething } 

Where操作過濾基於謂詞的序列。

運算符Any確定序列中的任何元素是否滿足條件。

請參閱MSDN上的standard linq operators文檔。

1

的問題也可能是你的字符串比較:

if(HostsTable.Values.Any(s => s.Name.Equals("myhostname", StringComparison.OrdinalIgnoreCase))) { doSomething }