比较项值的问题

时间:2010-03-13 17:22:33

标签: .net linq dictionary

我已经定义了我的课程:

public class Host 
{
     public string Name;
}

然后是一个强类型字典:

Dictionary<string, Host> HostsTable;

然后我尝试比较一个值:

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

问题是,找不到任何东西,即使我确定该项目在列表中。我做错了什么?

3 个答案:

答案 0 :(得分:5)

Where()会返回另一个IEnumerable<Host>,因此您对null的测试不会检查是否存在匹配项。

我认为这就是你要做的事情:

if(HostsTable.Values.Any(s => s.Name == "myhostname")) { doSomething }
如果有任何项目符合条件,则

Any()会返回true

答案 1 :(得分:1)

试试这个:

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

Where运算符根据谓词过滤序列。

Any运算符确定序列的任何元素是否满足条件。

请参阅MSDN上的standard linq operators文档。

答案 2 :(得分:1)

问题也可能在你的字符串比较中:

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