【发布时间】:2013-06-07 05:41:07
【问题描述】:
我正在创建一个包含以下课程的测验
Quiz 具有属性 CorrectOption、WrongOption1、WrongOption2、WrongOption3。
在其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”,因为它不是委托类型。
更新
例如,我在原始实体类上创建了一个只读属性来完成这项工作。但请让我知道更好的方法。 谢谢
更新2
但它不起作用:p 在 WCFTestClient.exe 上说以下内容
LINQ 不支持指定的类型成员“选项” 实体。只有初始化器、实体成员和实体导航 支持属性。
【问题讨论】:
-
请注意:你在用
ops做什么。看起来您填充它只是为了丢弃它。
标签: c# linq lambda anonymous-methods