Исключить оператор LET и SqlFunctions - PullRequest
0 голосов
/ 13 мая 2018

Пожалуйста, рассмотрите этот запрос:

from r in ent.MyTable
group r by new { r.EmployeeName, r.EmployeeID } into g
let c = " (" + SqlFunctions.StringConvert((decimal?)g.Count()) + " )"
select new
{
    EmployeeName = g.Key.EmployeeName + c ,
    EmployeeID = g.Key.EmployeeID
});

это хорошо работает. Когда я хочу использовать этот запрос вместо этого, я получаю ошибку:

from r in ent.MyTable
group r by new { r.EmployeeName, r.EmployeeID } into g
select new
{
    EmployeeName = g.Key.EmployeeName + " (" + g.Count() + ")",
    EmployeeID = g.Key.EmployeeID
});

Ошибка:

Невозможно преобразовать System.Object в System.String

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Итак, у вас есть MyTable, где каждая строка (возможно, работники) в таблице имеет как минимум свойства EmployeeId и EmployeeName.

Вы хотите сгруппировать строки из вашей таблицы в группы с равными EmployeeId и EmployeeName. Для каждой группы требуется общее EmployeeId и количество сотрудников в этой группе в виде общего `EmployeeName" + количество сотрудников.

var result = ent.MyTable                   // take MyTable
   .GroupBy(employee => new                // group all rows of this table into groups
   {                                       // with equal EmployeeId and EmployeeName
       Id = employee.EmployeeId,
       Name = employee.EmployeeName,
   })
   .Select(group => new                    // from every group make one object
   {                                       // with properties:
       EmployeeId = group.Key.Id,          // - the common employeeId
       EmployeeName = group.Key.Name       // - the common employeeName + the string value 
           + group.Count().ToString(),     //   of the number of elements in the group
   });
0 голосов
/ 08 августа 2018

Почему бы вам не преобразовать дважды вывод?

from r in ent.MyTable
group r by new { r.EmployeeName, r.EmployeeID } into g
select new
{
    EmployeeName = g.Key.EmployeeName,
    Count = g.Count(),
    EmployeeID = g.Key.EmployeeID
}
into tmp
select new
{
    EmployeeName = tmp.EmployeeName + "(" + Count + ")",
    EmployeeID = tmp.EmployeeID
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...