2013-05-20 55 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