У меня есть следующий запрос Linq to SQL, в котором я пытаюсь сделать несколько столбцов GROUP BY:
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 («Невозможно упорядочить по типу« Задача ».»).
Есть ли интерфейс, который должен реализовать Task (он уже реализует IComparable, IComparable )? Нужно ли, чтобы Task являлся объектом Linq to SQL (в настоящее время это не так, поскольку нет соответствующей таблицы). Или это только то, что Linq to SQL не поддерживает?
Обратите внимание, что я уже попробовал анонимный тип для группировки, который потерпел неудачу с похожим InvalidOperationException:
...
group revision by new { Code = revision.TaskSourceCode.ToUpper(),
Id = revision.TaskSourceID }
...
Для чего стоит, обратите внимание, что объект Task представляет собой смесь из 2 полей; один - это один символ (обычно «S» или «B»), а другой - «int» (на самом деле «внешний ключ» между базами данных, если хотите). Акт упорядочения по задачам просто сравнивает их строковые представления; НАПРИМЕР. Задача 'B101' <Задача 'S999' </p>