2013-05-20 57 views
0

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

这里是我的查询:

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

回答

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(); 
+0

也.ToDataTable()不识别美化版! –

+1

您应该将此扩展添加到静态类中。我忘记了这件事。 – lexeRoy

+0

检查如何为你创建一个扩展方法继续下去。 – lexeRoy