如何使用linq将数据传输到datatable

时间:2014-05-19 09:16:19

标签: c# asp.net sql linq datatable

我正在尝试将dropdownlist的数据源绑定到datatable,gridview的列显示'has error'&没有数据显示,我想知道我的linq查询有什么问题。

我的数据表中的数据就像这样

'26/12/2012 0:00:00',
'1/1/2012 0:00:00',
'1/5/2013 0:00:00',
'1/7/2013 0:00:00',
'4/5/2014 0:00:00

错误表:

enter image description here

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        DataTable dt = (DataTable)Session["DT"];
        var date = from q in dt.AsEnumerable()
                   where q.Field<DateTime>("Date").Year == int.Parse(DropDownList1.SelectedValue.ToString())
                   select q;

        GridView1.DataSource = date;
        GridView1.DataBind();
    }

1 个答案:

答案 0 :(得分:3)

HasErrorsDataRow的属性,我认为您需要将查询具体化,包含您要显示的列。使用CopyToDataTableDataTable创建IEnumerable<DataRow>或创建匿名类型列表:

DataTable dt = (DataTable)Session["DT"];
var filteredRows = from q in dt.AsEnumerable()
                   where q.Field<DateTime>("Date").Year == int.Parse(DropDownList1.SelectedValue.ToString())
                   select q;
GridView1.DataSource = filteredRows.CopyToDataTable();
GridView1.DataBind();