XML文字格式日期

时间:2012-03-23 09:36:00

标签: vb.net linq-to-sql linq-to-xml

目前我正在开发一个项目,要求我创建一些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翻译。

有没有人有解决方案?提前致谢。

1 个答案:

答案 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不是我的力量,所以也许你已经有了自己的排序。