Я использую ASP.NET 3.5, LLBLGenPro 3.0 и DevExpress 10.1.7.У меня есть ASPxGridView с LinqServerModeDataSource.Каждая строка ASPxGridView соответствует TaskEntity из LLBLGenPro.Одним из свойств TaskEntity является OrganizationCollection, которая представляет собой набор связанных OrganizationEntities.Что я хотел бы сделать, так это добавить столбец в ASPxGridView с именем OrgList, который бы отображал список связанных организаций по имени (в идеале в списке, ограниченном <br>
, поэтому каждый элемент будет находиться в отдельной строке, носписок будет находиться в одной ячейке, что работает, если столбец имеет свойство EncodeHtml, установленное в значение «False»).
В настоящее время я имею в событии lsmdsTasks_Selecting () (это упрощенный пример):
IQueryable<TaskEntity> taskQuery;
taskQuery = TaskQueryStore.GetTasks(...);
var query = from task in taskQuery
select new
{
task.Id,
task.TaskName,
OrgList = ???
}
e.KeyExpression = "Id";
e.QueryableSource = query;
До сих пор я пробовал несколько вещей для "???",со следующими результатами:
Сначала я попробовал:
OrgList = task.OrganizationCollection.Aggregate("", (acc, item) => (acc == "" ? "" : acc + "<br>") + item.OrgName)
Это дало мне следующее исключение ORMException: «Агрегат» не поддерживается в этом поставщике Linq. Пожалуйста, попробуйте переписатьзапрос с использованием методов, которые поддерживаются. "
Затем я попытался:
OrgList = String.Join("<br>", task.OrganizationCollection.Select(x => x.OrgName).ToArray())
Это дало мне следующее исключение ORMException: «У вызова метода Join нет известной функции сопоставленной базы данных или другого известного обработчика.»
Единственное, что сработало, было:
OrgList = GetOrgList(task.Id)
, а затем отдельно определяем метод GetOrgList()
, который берет идентификатор задачи и формирует список в нужном мне формате.и возвращает его в виде строки.Это действительно показывало данные в сетке так, как я хочу, но недостатком было то, что при попытке сортировки по этому столбцу он работает неправильно, а при попытке фильтрации по этому столбцу с помощью автофильтра он просто фильтруетвсе вне зависимостиПлюс, я полагаю, что он попадает в базу данных в несколько раз больше, чем необходимо.
Есть ли способ заставить это работать с сортировкой и фильтрацией без изменений?Или мне нужно будет отключить эти функции для этого столбца?