我正在尝试将datetime字段转换为字符串。找到了我收到的错误消息 下面。你以前见过这个吗?我没有得到解决方案。我该如何解决这个问题?
public IEnumerable<SelectListItem> GetStatusDate(string strprojectId)
{
var queryResult = (from dt in _objContext.tbl_Project_Status_MSTR
where dt.ProjectID.Equals(strprojectId)
orderby dt.ProjectID
select new SelectListItem {Text = Convert.ToString(dt.StatusDate),Value = Convert.ToString(dt.StatusDate)});
List<SelectListItem> objStatDate = queryResult.ToList();
return objStatDate;
}
LINQ to Entities无法识别方法&#39; System.String 的ToString(的System.DateTime)&#39;方法,这个方法不能 翻译成商店表达。
答案 0 :(得分:1)
一种方法是从数据库中查询StatusDate
,然后将其转换为内存中的字符串,如下所示:
var objStatDate =
(from dt in _objContext.tbl_Project_Status_MSTR
where dt.ProjectID.Equals(strprojectId)
orderby dt.ProjectID
select new {dt.StatusDate})
.ToList() //Execute database query
.Select(x =>
new SelectListItem
{
Text = Convert.ToString(x.StatusDate), //Convert data in memory
Value = Convert.ToString(x.StatusDate)
})
.ToList();
答案 1 :(得分:0)
使用此
List<string> ListOfDateString = (from dt in ListOfDateTime let str=dt.ToString() select str).ToList();
答案 2 :(得分:0)
EF没有Convert.ToString()的相应数据库函数,因此它会吐出该错误。
最简单的方法是执行类似这样的操作,首先命中数据库以仅获取日期,然后在内存中将其作为普通集合转换为字符串。
var queryResult = (from dt in _objContext.tbl_Project_Status_MSTR
where dt.ProjectID.Equals(strprojectId)
orderby dt.ProjectID
select dt.StatusDate)
.AsEnumerable()
.Select(d => new SelectListItem {Text = Convert.ToString(d),Value = Convert.ToString(d)});
虽然我可能会建议使用d.ToString()而不是转换,特别是因为你可以使用字符串格式和东西。您也可以将.ToList()打到查询的末尾并返回,而不是在下一行上执行。