对象初始化器中的匿名方法

时间:2013-06-11 11:28:57

标签: c# linq lambda anonymous-methods

我正在创建一个测验,其中包含以下课程

Quiz包含属性CorrectOptionWrongOption1WrongOption2WrongOption3

在其DTO我的List<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();
                        }
                };

但它会出现以下错误。

无法将lambda表达式转换为类型'System.Collections.Generic.List',因为它不是委托类型。

更新

例如,我在原始实体类上创建了一个只读属性来完成工作。但请告诉我更好的方法。 感谢

UPDATE2

但它不起作用:p表示关注WCFTestClient.exe

  

LINQ to不支持指定的类型成员'Options'   实体。仅初始化程序,实体成员和实体导航   支持属性。

1 个答案:

答案 0 :(得分:0)

陷入类似的问题。我可以通过在查询上调用ToList()然后单独查询Select new {...}

来绕过它