dataRow.ItemArrray为CSV,其中一列为datetime

时间:2017-10-26 10:19:48

标签: vb.net csv datetime

我有一个数据表,其中包含ID,Date1,Amount等字段

我想将数据行转换为CSV格式

即: -

101 | 2017-10-10 | 15000
102 | 2017-10-15 | 12500
103 | 2017-10-25 | 20000

我使用下面的代码将行转换为CSV字符串:

Dim rowAsString = String.Join(", ", dRow.ItemArray.Select(Function(c) "'" & c.ToString() & "'").ToArray())

输出为: -

101, 10/10/2017 12:00 AM, 15000
102, 15/10/2017 12:00 AM, 12500
103, 25/10/2017 12:00 AM, 20000

我想要的是: -

101, 2017-10-10, 15000
102, 2017-10-15, 12500
103, 2017-10-25, 20000

请帮助我使用上面的linq查询来格式化yyyy-mm-dd

格式的日期值字段

2 个答案:

答案 0 :(得分:2)

您可以使用此module MyApp module ActiveAdmin module Views module Pages module BaseExtension def build_active_admin_head super within @head do text_node(javascript_pack_tag('application')) end end end end end end end class ActiveAdmin::Views::Pages::Base < Arbre::HTML::Document prepend MyApp::ActiveAdmin::Views::Pages::BaseExtension end 扩展程序:

DataRow

用法:

public static string ToCsvString(this DataRow row, string delimiter)
{
    return ToCsvString(row, delimiter, null, null);
}

public static string ToCsvString(this DataRow row, string delimiter, string dateFormat, IFormatProvider formatProvider)
{
    if(dateFormat == null)
        dateFormat = DateTimeFormatInfo.InvariantInfo.ShortDatePattern;
    if (formatProvider == null)
        formatProvider = DateTimeFormatInfo.InvariantInfo;

    var fields = row.Table.Columns.Cast<DataColumn>()
        .Select(c => c.DataType != typeof(DateTime)
            ? row[c].ToString()
            : row.Field<DateTime>(c).ToString(dateFormat, formatProvider));
    return string.Join(delimiter, fields);
}

VB.NET版本:

string rowAsString = dRow.ToCsvString(", ");

答案 1 :(得分:0)

这应该有效。 View -> Tool Windows -> Build Variants应更改为日期列。

i = 1