2014-04-16 109 views
0

我有一本字典LINQ声明字典第一个关键的价值

private Dictionary<string, string> ScannerMessages; 

,然后我对这个

public bool equalMessages() 
    { 
     lock (lockObj) 
     { 
      return (ScannerMessages.Values.ToList().Distinct().Count() < ScannerMessages.Values.ToList().Count) ? true : false; 
     } 
    } 

调用并返回如果消息是相等的。我还需要在该子句的末尾添加第二个检查以验证值不为空或空。我试图做这样的事情,但我不知道去哪里了LINQ声明(不是最大的,在LINQ)...

public bool equalMessages() 
    { 
     lock (lockObj) 
     { 
      return ((ScannerMessages.Values.ToList().Distinct().Count() < ScannerMessages.Values.ToList().Count) && (ScannerMessages.Keys.First() *get the value here and check it !null or string.empty) ? true : false; 
     } 
    } 

回答

2

要验证所有的值不为空或为空:

ScannerMessages.Values.All(s => !string.IsNullOrEmpty(s)) 

如果所有的值不为空或不为空,它将返回true。

+0

这实际上是完美的 - 谢谢。 – alykins

+0

+1 dang我忘记了威武。所有:) –

1

如果你想获得你能做的非空值这样的:

ScannerMessages.Values.Where(v=>!string.IsNullOrEmpty(v)).ToList() 

或者只是为了让计

ScannerMessages.Values.Where(v=>!string.IsNullOrEmpty(v)).Count() 

ScannerMessages[ScannerMessages.Keys.First()].Where(v=>!string.IsNullOrEmpty(v)).Count() 
+0

这非常接近我所需要的。 ()(ScannerMessages.Values.ToList()。Distinct().Count()!string.IsNullOrEmpty(v))。Count()> 0))?真假;但我确实得到了一块无效的参数错误“string.IsNullOrEmpty(v)” – alykins

相关问题