Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何从datatable中选择数据_Asp.net_Datatable - Fatal编程技术网

Asp.net 如何从datatable中选择数据

Asp.net 如何从datatable中选择数据,asp.net,datatable,Asp.net,Datatable,Mydatatable包含列“Date”,其数据如下所示 '2013-01-01', '2013-05-01', '2014-01-01', '2014-12-25', '2014-12-26 但我希望获得类似“选择不同的年份(日期)”的数据,并将所选数据绑定到dropdownlist中 但是,会弹出语法错误消息:“语法错误:“year”运算符后缺少操作数。” 我能得到任何支持吗?谢谢 private DataTable BuildDT(string [] date) { DataTa

My
datatable
包含列“Date”,其数据如下所示

'2013-01-01',
'2013-05-01',
'2014-01-01',
'2014-12-25',
'2014-12-26
但我希望获得类似“
选择不同的年份(日期)
”的数据,并将所选数据绑定到dropdownlist中 但是,会弹出语法错误消息:“
语法错误:“year”运算符后缺少操作数。
” 我能得到任何支持吗?谢谢

private DataTable BuildDT(string [] date)
{
    DataTable dt = new DataTable("test");

    dt.Columns.Add("RowID", typeof(Int16));
    dt.Columns.Add("Date", typeof(DateTime));        

    for (int i = 0; i < date.Length; i++)
    {
        dt.Rows.Add(i+1,date[i]); // {1,2013-01-01}
    }
    return dt;
}


private void ddlGetData2(DataTable table)
{
    table.DefaultView.RowFilter = "distinct year(Date)";
    DropDownList1.DataSource = table;
    DropDownList1.DataBind();
}
私有数据表BuildDT(字符串[]日期)
{
数据表dt=新数据表(“测试”);
添加(“RowID”,typeof(Int16));
添加(“日期”,类型(日期时间));
for(int i=0;i
您可以使用LINQ

var years = table.AsEnumerable()
                .Select(r => r.Field<DateTime>("Date").Year)
                .Distinct()
                .OrderBy(y => y)
                .ToList();
var years=table.AsEnumerable()
.选择(r=>r.字段(“日期”).年)
.Distinct()
.OrderBy(y=>y)
.ToList();
您可以在关联的
数据视图
实例上使用

var dv = dt.DefaultView;
var distinctDates = dv.ToTable(true, "Date");

为了补充这一点,我看了一下:如果我替换“
table.DefaultView.RowFilter=”distinct year(Date)”,就看不到对distinct的任何引用,因为它是RowFilter支持的表达式“按上述行”错误提示“
指定的强制转换无效。
”您能提供更多帮助吗?Thx刚刚注意到Date列是一个
DateTime
,但是它被
字符串
s填充。您希望它是
string
s还是
DateTime
s?我想应该是
DateTime
而不是
dt.Rows.Add(i+1,date[i]),请在插入数据表之前尝试将其转换为日期
dt.Rows.Add(i+1,DateTime.ParseExact(date[i],“yyyy-MM-dd”,CultureInfo.InvariantCulture);