目前我正在开发一个项目,要求我创建一些XML以用于图形插件。我使用XML文字和LINQ to SQL如下
Dim x As XElement = _
<chart caption='Aantal aanvragen' xAxisName='Dag' yAxisName='Aantal'>
<%= From d In dailies Select _
<set label=<%= d.Datum %> value=<%= d.Aantal %>>
</set> %>
</chart>
Dailies只是一个更复杂的Linq查询,Datum的类型是Date?和Int。类型的Aantal。
现在我的问题是如何正确格式化日期。我认为那会是这样的:
<%= CDate(d.Datum).ToString("d MMM yyyy") %>
不幸的是,这给了我:
System.NotSupportedException:Method&#39; System.String ToString(System.String)&#39;没有受支持的SQL翻译。
有没有人有解决方案?提前致谢。
答案 0 :(得分:2)
如果要构建XML内容,可以通过添加AsEnumerable()
来确保从SQL服务器中提取数据,例如
Dim x As XElement = _
<chart caption='Aantal aanvragen' xAxisName='Dag' yAxisName='Aantal'>
<%= From d In dailies.AsEnumerable() Select _
<set label=<%= d.Datum %> value=<%= d.Aantal %>>
</set> %>
</chart>
这样就可以避免尝试将方法调用ToString()转换为SQL的问题。
但是,您需要决定,如果您确实将d.Datum
作为某些项目的 From d in dailies.AsEnumerable() Where d.Datum.HasValue Select ...
无效,那么该表列是否确实包含空值,要么确保排除这些项目例如
If
或使用{{1}}运算符输出一些默认值。但这更像是一个VB问题,而不是LINQ to XML问题,VB不是我的力量,所以也许你已经有了自己的排序。