1

次のコードを使用しています。

    Dim questions = db.Tbl_Challenge_Questions.Where(Function(x) x.Quest_Challenge_ID = challengeId)

    Dim answersToQuestions = New Collection

    For Each question As Tbl_Challenge_Question In questions

        Dim questionId = question.Quest_ID
        Dim answer = question.Tbl_Challenge_Question_Answer.Where(Function(x) x.QAns_Question_ID = questionId).FirstOrDefault.QAns_Answer()
        Debug.Print("Quest_ID=" + question.Quest_ID.ToString)
        Debug.Print("answer=" + answer)
        'answersToQuestions.Add(question.Quest_ID, answer)

    Next

これは次のように出力されます:

Quest_ID=1
answer=True
Quest_ID=2
answer=150 minutes
Quest_ID=3
answer=True
Quest_ID=4
answer=False
Quest_ID=5
answer=Continuing to smoke

コレクションに追加する行のコメントを外すと、次のanswersToQuestions.Add(question.Quest_ID, answer)エラーが出力されます。

Quest_ID=1
answer=True
Quest_ID=2
answer=150 minutes
Quest_ID=3
answer=True
A first chance exception of type 'System.ArgumentException' occurred in Microsoft.VisualBasic.dll
The program '[4948] WebDev.WebServer40.EXE: Managed (v4.0.30319)' has exited with code 0 (0x0).

追加に失敗しました。指定されたキー値が重複しています。

重複はないようです。これらのアイテムをすべてコレクションに追加するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

4

Visual Basic 固有のCollectionクラスを使用しています (実際にはレガシー コード ベースを対象としています)。

そのメソッドは、 thenではなく、 thenAddが渡されることを期待しています:ItemKeyKeyItem

public void Add(
    Object Item,
    string Key,
    Object Before,
    Object After
)

あなたはすでにキーでそこに値を持っていますTrue...

@Paul Grimshaw が推奨するように、 などのジェネリック型を使用することもお勧めしDictionary(Of TKey,TValue)ます。

于 2012-10-08T14:41:58.693 に答える
2

これが機能するかどうかを試すことができますか?

Dim questions = db.Tbl_Challenge_Questions.Where(Function(x) x.Quest_Challenge_ID = challengeId)

    Dim answersToQuestions = New Dictionary(Of Integer, String)

    For Each question As Tbl_Challenge_Question In questions

        Dim questionId = question.Quest_ID
        Dim answer = question.Tbl_Challenge_Question_Answer.Where(Function(x) x.QAns_Question_ID = questionId).FirstOrDefault.QAns_Answer()
        Debug.Print("Quest_ID=" + question.Quest_ID.ToString)
        Debug.Print("answer=" + answer)
        answersToQuestions.Add(question.Quest_ID, answer)
     Next







    Next
于 2012-10-08T14:38:22.690 に答える