使用ADO .NET实体模型填充DataTable

时间:2013-05-20 01:02:22

标签: c# ado.net datatable

我正在使用ADO .Net实体数据模型开发一个Windows窗体应用程序。我有DataTable dt = new DataTable,如何使用dataBaseEtities从数据库中填充此DataTable?

这是我的问题:

     from data in db.Sources 
     where data.IdTheme==idtheme 
     select data.Url;

1 个答案:

答案 0 :(得分:1)

您可以创建这样的扩展程序,然后将其添加到您的查询中:

public static DataTable ToDataTable<T>(this List<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;
}
  

您的查询将如下:

var newDataTable = (from data in db.Sources
                    where data.IdTheme == idtheme
                    select data.Url).ToDataTable();