Model view controller 如何在MVC中设置SelectList中日期时间字段的格式?

Model view controller 如何在MVC中设置SelectList中日期时间字段的格式?,model-view-controller,Model View Controller,我正在创建一个新的SelectList对象并连接两个字段,一个是字符串,另一个是日期时间。基本上,我正在构建一个下拉列表,显示事件的名称和日期。当我尝试运行代码时,出现错误“LINQ to Entities无法识别方法”System.String ToShortDateString“方法,并且此方法无法转换为存储表达式。” 任何帮助都将不胜感激 ViewBag.EventKey = new SelectList((from e in db.Events where e.Active == tru

我正在创建一个新的SelectList对象并连接两个字段,一个是字符串,另一个是日期时间。基本上,我正在构建一个下拉列表,显示事件的名称和日期。当我尝试运行代码时,出现错误“LINQ to Entities无法识别方法”System.String ToShortDateString“方法,并且此方法无法转换为存储表达式。”

任何帮助都将不胜感激

ViewBag.EventKey = new SelectList((from e in db.Events where e.Active == true select new { e.PKey, EventInfo = e.Name + " " + e.EventDate.ToShortDateString() }), "Pkey", "EventInfo");

问题在于,您正在将要转换为DB查询的语句中调用.ToShortDateString。请尝试以下操作:

ViewBag.EventKey = new SelectList((from e in db.Events where e.Active == true select e).ToArray().Select(e => new { e.PKey, EventInfo = e.Name + " " + e.EventDate.ToShortDateString() }), "Pkey", "EventInfo");

实体框架将LINQ查询转换为SQL查询,而TSQL中没有ToSortDateString的等价项。从数据库中获取事件列表并加载到内存中,然后格式化它

var eventList = (from e in db.Events where e.Active == true select new { PKey = e.PKey, EventName = e.Name, EventName = e.EventDate; }).ToList();

ViewBag.EventKey = new SelectList(eventList.Select(e => new { e.PKey, EventInfo = e.EventName + " " + e.EventDate.ToShortDateString()}), "Pkey", "EventInfo");

令人惊叹的谢谢你的帮助!