我有以下的LINQ to SQL查询,其中我试图做一个多列GROUP BY:( “不能按类型 '任务' 命令”)Linq to SQL:我如何订购通过组合对象?
return from revision in dataContext.Revisions
where revision.BranchID == sourceBranch.BranchID-1
&& !revision.HasBeenMerged
group revision by new Task(revision.TaskSourceCode.ToUpper(),
revision.TaskSourceID)
into grouping
orderby grouping.Key ascending
select (ITask)grouping.Key;
这将引发InvalidOperationException异常。
是否有任务必须实现一个接口(它已经实现了IComparable,IComparable的<ITask>)? Task是否需要是Linq to SQL Entity(目前不是,因为没有相应的表)。或者这仅仅是Linq to SQL不支持的东西?
请注意,我已经尝试过了分组匿名类型,它失败,类似的出现InvalidOperationException:
...
group revision by new { Code = revision.TaskSourceCode.ToUpper(),
Id = revision.TaskSourceID }
...
对于它的价值,注意,任务目标是2场的复合物;一个是单个字符(通常是'S'或'B'),另一个是int(如果你喜欢,实际上是一个跨数据库的“外键”)。任务排序的行为只是比较他们的字符串表示;例如。任务“B101” <任务“S999”
你能解释一下你在代码/伪代码中的建议吗?我只是没有遵循你所得到的... – 2008-11-27 00:53:40