Check if KeyValuePair exists with LINQ's FirstOrDefault

c#, linq, null

Solution

If you just care about existence, you could use `ContainsValue(0)` or `Any(p => p.Value == 0)` instead? Searching by value is unusual for a `Dictionary<,>`; if you were searching by key, you could use `TryGetValue`.

One other approach:

var record = data.Where(p => p.Value == 1)
     .Select(p => new { Key = p.Key, Value = p.Value })
     .FirstOrDefault();

This returns a class - so will be `null` if not found.

Problem

I have a dictionary of type ``` Dictionary<Guid,int> ``` I want to return the first instance where a condition is met using ``` var available = m_AvailableDict.FirstOrDefault(p => p.Value == 0) ``` However, how do I check if I'm actually getting back a KeyValuePair? I can't seem to use != or == to check against default(KeyValuePair) without a compiler error. There is a similar thread here that doesn't quite seem to have a solution. I'm actually able to solve my particular problem by getting the key and checking the default of Guid, but I'm curious if there's a good way of doing this with the keyvaluepair. Thanks

Original source

Related problems