【发布时间】:2013-07-09 08:06:45
【问题描述】:
我这里有这个查询代码:
//Get all records based on ActivityID and TaskID.
public IList<Model.questionhint> GetRecords1(int listTask, int listActivity)
{
IList<Model.questionhint> lstRecords = context.questionhints.ToList();
return lstRecords.GroupBy(x => new { x.QuestionNo, x.ActivityID, x.TaskID }).Where(a => a.TaskID == listTask && a.ActivityID == listActivity).ToList();
}
错误在于.Where 语句,它说不包含ActivityID 和TaskID 的定义。
完全错误:
“System.Linq.IGrouping”不包含“ActivityID”的定义,并且找不到接受“System.Linq.IGrouping”类型的第一个参数的扩展方法“ActivityID”(您是否缺少 using 指令或程序集参考?)
我的查询语句很弱,基本上我想从数据库中检索活动 id = something 和 task id = something 的记录,并按 questionNo、activityId 和 Task ID 对它们进行分组。
【问题讨论】:
-
顺便说一句;如果
context这里是一个提供程序,如 LINQ-to-SQL、EF 等 - 那么IList<Model.questionhint> lstRecords = context.questionhints.ToList();是一个真的 坏主意 - 这会迫使它加载整个表,在where等之前 - 并切换到 LINQ-to-Objects。我已经编辑了我的答案以展示如何避免这种情况