消除LET运算符和SqlFunction

Ari*_*ian 6 c# linq entity-framework c#-4.0

请考虑以下查询:

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
});
Run Code Online (Sandbox Code Playgroud)

它运作良好.当我想要使用此查询时,我收到一个错误:

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
});
Run Code Online (Sandbox Code Playgroud)

错误:

无法将System.Object转换为System.String

我怎样才能做到这一点?

Dip*_*hah 0

为什么不双重变换你的输出呢?

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
}
Run Code Online (Sandbox Code Playgroud)