1

オブジェクトから、特に辞書でLINQに頭を悩ませようとしていますが、ひどく失敗しています。

SO のいくつかのスレッドでこの構文を見てきました。

var items = (from pair in m_taskDictionary
    from s in pair.Value
     s).Distinct().ToList();    

しかし、これをコンパイルしようとすると、構文エラーが発生します。タイプ 'OperationsPlannerData.OperationsTaskLabeledData' の式は、ソース タイプ 'System.Collections.Generic.Dictionary' のクエリ式の後続の from 句では許可されません。'SelectMany' の呼び出しで型の推定に失敗しました。

なにが問題ですか?私の Visual Studio は古すぎますか? (男の子は私を驚かせないでしょう。)私はVS 2008を使用しています。

この使用法を推奨するスレッドの 1 つへのリンクを次に示します。

C# で LINQ を使用した辞書操作

簡単に言うと、解決したい問題は次のとおりです。値オブジェクトの特定のフィールドが特定の文字列と一致する辞書の最初の項目を見つけたいと考えています。アプリケーションでの 1 つの目的のために、整数をキーとするディクショナリが既にあるので、そのディクショナリをそのまま使用したいと思います。SO のさまざまなスレッドは、List<KeyValuePair<string, OperationsTaskLabeledData>>これにオブジェクトを使用することを提案しています。そのオブジェクトを簡単に作成できましたが、その構造を検索する方法もわかりません。

4

4 に答える 4

4

OPに選択がありませんが、この答えは最後の段落です。

m_taskDictionary.First(kvp => kvp.Value.WhateverFieldYouNeed == someString);

null一致する要素が見つからない場合にデフォルト値 (参照型の場合) を返すようにするには、 を使用しますFirstOrDefault

于 2013-05-31T18:48:19.010 に答える