我有以下GROUP语句产生我正在寻找的结果。
但是,我想将下面的第4行更改为“group by s.ComplaintNatureTypeId.ToDescription()”,以便结果按ENUM描述而不是数字键值进行分组。
如果我更改了行,我会收到错误“Method'System.String ToDescription(System.Enum)'没有支持的SQL转换。”
注意:ToDescription()是一个枚举扩展方法,用于从枚举中获取描述。
var qry = from s in _db.Complaints
where s.Site.SiteDescription.Contains(searchTextSite)
&& (s.Raised >= startDate && s.Raised <= endDate)
group s by s.ComplaintNatureTypeId.ToString()
into grp
select new
{
Site = grp.Key,
Count = grp.Count()
};
return Json(qry.ToList(), JsonRequestBehavior.AllowGet);
ENUM课程:
using System.ComponentModel;
namespace Emas.Model.Enumerations
{
public enum ComplaintNatureType
{
[Description("- Please Select -")]
Blank = 0,
[Description("Letter")]
LE = 1,
[Description("eMail")]
EM = 2,
[Description("Verbal")]
VE = 3,
[Description("Other [see comments]")]
OT = 4,
}
}
答案 0 :(得分:2)
您必须在内存中执行.ToDescription()
。
var qry = (from s in _db.Complaints
where s.Site.SiteDescription.Contains(searchTextSite)
&& (s.Raised >= startDate && s.Raised <= endDate)
group s by s.ComplaintNatureTypeId
into grp
select new
{
Site = grp.Key,
Count = grp.Count()
})
.ToList()
.Select(g => new
{
Site = g.Site.ToDescription(),
g.Count
});
return Json(qry, JsonRequestBehavior.AllowGet);