1. ホーム
  2. c#

LINQのFirstOrDefaultでKeyValuePairが存在するかどうかをチェックする

2023-09-01 02:03:56

質問

の辞書を持っています。

Dictionary<Guid,int>

を使って、ある条件を満たした最初のインスタンスを返したい。

var available = m_AvailableDict.FirstOrDefault(p => p.Value == 0)

しかし、実際にKeyValuePairが返ってくるかどうかは、どのように確認すればよいのでしょうか?default(KeyValuePair)に対して!=や==を使ってチェックしても、コンパイラーエラーにならないようです。 似たようなスレッドがあります ここに がありますが、これは解決策を持っていないようです。私は実際にキーを取得し、Guidのデフォルトをチェックすることによって私の特定の問題を解決することができますが、私はkeyvaluepairでこれを行うための良い方法があるかどうかを知りたいと思っています。ありがとうございます。

どのように解決するのですか?

存在だけを重視するのであれば ContainsValue(0) あるいは Any(p => p.Value == 0) で検索するのですか?で検索すると は珍しく Dictionary<,> キーで検索している場合は TryGetValue .

もう一つのアプローチ。

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

これは クラス - を返すので null となります。