【问题标题】:Linq Table to DataTable castingLinq Table 到 DataTable 转换
【发布时间】:2010-12-28 10:59:18
【问题描述】:

如何投射

System.Data.Linq.Table<T>System.Data.DataTable

        DemoDBDataContext context = new DemoDBDataContext();
        DataSet ds = new DataSet();
        var query = context.Customers;   
        ds.Tables[0] = query;

如何做到这一点?任务

ds.Tables[0] = query;

它抛出

属性或索引器System.Data.DataTableCollection.this[int] 不能分配给它是只读的。

【问题讨论】:

    标签: c# linq dataset


    【解决方案1】:

    您不能将 System.Data.Linq.Table 转换为 DataTable,但是您可以轻松地在 IEnumerable 上编写扩展方法将其转换为 DataTable:

    public static DataTable ToDataTable<T>(this IEnumerable<T> items)
    {
        var tb = new DataTable(typeof(T).Name);
            PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
        foreach(var prop in props)
        {
            tb.Columns.Add(prop.Name, prop.PropertyType);
        }
    
        foreach (var item in items)
        {
            var values = new object[props.Length];
            for (var i=0; i<props.Length; i++)
            {
               values[i] = props[i].GetValue(item, null);
            }
    
            tb.Rows.Add(values);
        }
        return tb;
    }
    

    来源:http://www.chinhdo.com/20090402/convert-list-to-datatable/

    【讨论】:

    • 抱歉延迟回复。它正在工作,感谢您的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    相关资源
    最近更新 更多