0

次のクラスを持つクイズを作成しています

QuizプロパティCorrectOptionWrongOption1WrongOption2WrongOption3

その中にDTOList<String> Optionsすべての間違ったオプションと正しいオプションを含む があります。

エンティティの取得中に、DTO のオブジェクト初期化子を使用していますが、割り当てる方法がわかりません List<String> Options

そのために匿名メソッドを使用したことを覚えています。

     select new QuestionDTO
                {
                    Category = q.QuizCategory.Text
                    ,
                    CorrectOption = q.CorrectOption
                    ,
                    DifficultyLevel = q.DifficultyLevel.Text
                    ,
                    Points = q.DifficultyLevel.Points.Value
                    ,
                    RewardPCT = q.DifficultyLevel.RewardPCT.Value
                    ,
                    Text = q.Text
                    ,
                    TimerDuration = q.DifficultyLevel.TimerDuration.Value
                    ,
                    Options = (qz) =>
                        {
                            List<string> ops = new List<string>();

                            ops.Add(q.CorrectOption);
                            ops.Add(q.WrongOption1);
                            ops.Add(q.WrongOption2);
                            ops.Add(q.WrongOption3);

                            return new List<string>().Shuffle();
                        }
                };

しかし、次のエラーが発生します。

デリゲート型ではないため、ラムダ式を 'System.Collections.Generic.List' 型に変換できません。

アップデート

たとえば、作業を行うために、元のエンティティ クラスに読み取り専用プロパティを作成しました。しかし、もっと良い方法を教えてください。ありがとう

更新2

しかし、それはうまくいきませんでした:pはWCFTestClient.exeをフォローすると言います

指定された型メンバー 'Options' は、LINQ to Entities ではサポートされていません。初期化子、エンティティ メンバー、およびエンティティ ナビゲーション プロパティのみがサポートされています。

4

1 に答える 1

0

同様の問題に遭遇しました。ToList()クエリを呼び出してから、 Select new {... } の別のクエリを呼び出すことで、それを回避できました。

于 2013-08-07T20:44:57.533 に答える