我有一本字典,类型是
Dictionary<Guid,int>
我想返回满足条件的第一个实例,使用
var available = m_AvailableDict.FirstOrDefault(p => p.Value == 0)
但是,我如何检查我是否真的得到了一个KeyValuePair?在没有编译器错误的情况下,我似乎无法使用!=或==来检查默认值(KeyValuePair)。有一个类似的线程here似乎没有解决方案。实际上,我可以通过获取密钥并检查默认的Guid来解决我的特定问题,但是我很好奇是否有一个好的方法来使用keyvaluepair来实现这一点。谢谢
发布于 2010-08-05 19:38:41
使用default()关键字。
bool exists = !available.Equals(default(KeyValuePair<Guid, int>));
发布于 2009-04-27 15:05:13
您需要的是一个Any
方法,它也可以提供匹配的元素。您可以很容易地自己编写此方法。
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;
}
}
发布于 2009-04-27 15:01:54
您可以检查是否
available.Key==Guid.Empty
https://stackoverflow.com/questions/793897
复制相似问题