在linq中将日期时间字段转换为字符串
Converting a date time field to string in linq
我正在尝试将日期时间字段转换为字符串。找到我收到的错误信息
以下。你以前见过这个吗?我没有得到解决方案。请问我该如何解决?
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 does not recognize the method 'System.String
ToString(System.DateTime)' method, and this method cannot be
translated into a store expression.
一种方法是从数据库中查询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();
使用这个
List<string> ListOfDateString = (from dt in ListOfDateTime let str=dt.ToString() select str).ToList();
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() 打到查询的末尾,然后 return 那,而不是在下一行做。
我正在尝试将日期时间字段转换为字符串。找到我收到的错误信息 以下。你以前见过这个吗?我没有得到解决方案。请问我该如何解决?
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 does not recognize the method 'System.String ToString(System.DateTime)' method, and this method cannot be translated into a store expression.
一种方法是从数据库中查询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();
使用这个
List<string> ListOfDateString = (from dt in ListOfDateTime let str=dt.ToString() select str).ToList();
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() 打到查询的末尾,然后 return 那,而不是在下一行做。