首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用LINQ的FirstOrDefault检查KeyValuePair是否存在

使用LINQ的FirstOrDefault检查KeyValuePair是否存在
EN

Stack Overflow用户
提问于 2009-04-27 14:57:15
回答 4查看 66.8K关注 0票数 76

我有一本字典,类型是

代码语言:javascript
复制
Dictionary<Guid,int>

我想返回满足条件的第一个实例,使用

代码语言:javascript
复制
var available = m_AvailableDict.FirstOrDefault(p => p.Value == 0)

但是,我如何检查我是否真的得到了一个KeyValuePair?在没有编译器错误的情况下,我似乎无法使用!=或==来检查默认值(KeyValuePair)。有一个类似的线程here似乎没有解决方案。实际上,我可以通过获取密钥并检查默认的Guid来解决我的特定问题,但是我很好奇是否有一个好的方法来使用keyvaluepair来实现这一点。谢谢

EN

回答 4

Stack Overflow用户

发布于 2010-08-05 19:38:41

使用default()关键字。

代码语言:javascript
复制
bool exists = !available.Equals(default(KeyValuePair<Guid, int>));
票数 20
EN

Stack Overflow用户

发布于 2009-04-27 15:05:13

您需要的是一个Any方法,它也可以提供匹配的元素。您可以很容易地自己编写此方法。

代码语言:javascript
复制
public static class IEnumerableExtensions
{
  public static bool TryGetFirst<TSource>(this IEnumerable<TSource> source,
                                          Func<TSource, bool> predicate,
                                          out TSource first)
  {
    foreach (TSource item in source)
    {
      if (predicate(item))
      {
        first = item;
        return true;
      }
    }

    first = default(TSource);
    return false;
  }
}
票数 9
EN

Stack Overflow用户

发布于 2009-04-27 15:01:54

您可以检查是否

代码语言:javascript
复制
available.Key==Guid.Empty
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/793897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档