1

私はこのようなオブジェクトを持っています:

Tuple<Question, Levels[]>

// question, { easy, medium, hard }

LevelsEasy、Medium、Hard、Expert の 4 つのオプションを持つ列挙型です。

そして、タプルを含む列挙型ごとに、LINQ 関数がDictionary<Question, Levels>. 例えば

タプルに 3 つのレベルがある場合、ディクショナリには 3 つの値が必要です。

// question, Easy
// question, Medium
// question, Hard
4

2 に答える 2

2

他の人が指摘したように、質問はあまり明確ではありません。あなたがやりたいと思うかもしれないさまざまなことをお見せしようとしました:

var stuff = new Tuple<Question, Levels[]>[] {
      // .... 
    };

var flattened = stuff.SelectMany(tup => 
     tup.Item2.Select(Level => new { tup.Question, Level }));

var grouped = flattened.GroupBy(flat => flat.Level);

// now you can do
var easyOnes = grouped[Levels.Easy];
var mediumOnes = grouped[Levels.Medium];
于 2012-10-11T22:44:57.153 に答える
0

Dictionary<TKey, TValue>これには一意のキーが必要なため、 a が実際にあなたが求めているものかどうか疑問に思います。

あなたが得ることができる最も近いものは、おそらくToLookup<TKey, TElement>拡張メソッドを使用することです:

var tuple = new Tuple<Question, Levels[]>(question, 
    new [] { Levels.Easy, Levels.Medium, Levels.Hard});

var questionLevels = tuple.Item2.ToLookup(level => tuple.Item1);

// questionLevels contains:
// question, Levels.Easy
// question, Levels.Medium
// question, Levels.Hard

これを使用して、質問のすべてのレベルを取得できます。

var levels = questionLevels[question];
// levels contains:
// Levels.Easy
// Levels.Medium
// Levels.Hard
于 2012-10-11T23:34:41.983 に答える