我在linQ查询下面遇到错误:
LINQ to Entities无法识别方法'System.String ToString(System.DateTime)'方法,并且此方法无法转换为商店表达式。
var query = from i in Expenditure
join d in Department on i.DepartId equals d.dID
where i.Status == "Audit"
group i by new { i.InvoiceId, d.Title, i.InvoiceDate } into g
select new
{
id = g.Key.InvoiceId,
txt = g.Key.Title + " // " + g.Key.InvoiceId + " // " + Convert.ToString(g.Key.InvoiceDate)
};
我想要txt输出如下:
健康// Inv001 // 12-03-2018
教育// Inv002 // 23-03-3018
问题在于我最初写的InvoiceDate(Datetime)字段(没有转换)为:g.Key.InvoiceDate
但我收到错误:无法将类型'System.DateTime'强制转换为'System.Object'。 LINQ to Entities仅支持转换EDM原语或枚举类型。
有人能建议一个简单的解决方案吗?感谢。
答案 0 :(得分:1)
而不是在数据库中组装<select id="s">
<option>1 Foo</option>
<option>2 Foo</option>
<option>3 Foo</option>
<option>4 Foo</option>
</select>
<button type="button" id="b1" data-index="-1">Change No Selection</button>
<button type="button" id="b2" data-index="0">Change First Selection</button>
并强制txt
将逻辑转换为SQL,首先检索数据然后应用转换
尝试以下
Linq To Entities
答案 1 :(得分:1)
ToString不是SQL函数,因此无法在SQL查询中完成。
试试这个:
var query = (from i in Expenditure
join d in Department on i.DepartId equals d.dID
where i.Status == "Audit"
group i by new { i.InvoiceId, d.Title, i.InvoiceDate } into g
select new
{
g.Key.InvoiceId,
g.Key.Title,
g.Key.InvoiceDate,
}).ToList()
.select new
{
id = InvoiceId,
txt = Title + " // " + InvoiceId + " // " + Convert.ToString(InvoiceDate)
};
.ToList()之后的所有内容都将在内存中完成,您可以在其中使用任何.NET方法。