2012-02-20 91 views
2

我試圖將Datatable轉換爲c#類。C#將Datatable轉換爲

我正在使用以下方法將 轉換爲我開發的控制檯應用程序。我沒有在控制檯應用程序中引用實體框架。

**Class1** items = dt.AsEnumerable().Select(row => 
    new Class1 
    { 
     id = row.Field<string>("id"), 
     name = row.Field<string>("name") 
    }).FirstOrDefault(); 

當我暗示此代碼,以我的實時項目

我收到以下錯誤

類型「System.Data.Objects.DataClasses.IEntityWithKey」在集中定義沒有被引用。

我不想引用實體框架的工作,並在我的控制檯應用程序中,我沒有引用任何thing.It是完美的工作。爲什麼我在我的實時項目中得到這個錯誤

是否有任何其他方式將datatable轉換爲c#類。

我的應用程序是在C#,Visual Studio 2008控制檯應用程序。

錯誤Class1中 控制檯和實時項目顯示在VS 2008

+0

什麼是您的實時項目?的WinForms?安慰? Web應用程序? – 2012-02-20 08:08:12

+0

錯誤顯示的內容是什麼? – gideon 2012-02-20 08:08:30

+0

@ Line,Line#1中的Shadow和c#console錯誤 – user1194619 2012-02-20 08:10:47

回答

0

一旦你有你引用的問題整理出來,並假設你真的想從行中的DataTable轉換的實例。 NET類,看看this blog post

讓你這樣做:

// create and fill table 
DataTable table = new DataTable(); 
table.Columns.Add("Id", typeof(int)); 
table.Rows.Add(new object[]{1}); 
table.Rows.Add(new object[]{2}); 
table.Rows.Add(new object[]{3}); 

// create a wrapper around Rows 
LinqList<DataRow> rows = new LinqList<DataRow>(table.Rows); 

// do a simple select 
IEnumerable<DataRow> selectedRows = from r in rows 
     where (int)r["Id"] == 2 
     select r; 

// output result 
foreach (DataRow row in selectedRows) 
    Console.WriteLine(row["Id"]); 
+0

爲什麼不只是dt.AsEnumerable()?數據集擴展就是這樣做的。 – 2012-02-24 08:20:08

+0

哦。不知道!整齊!雖然,OP會說:「我不想引用實體框架工作」 - 是EF中的數據集擴展嗎? – tomfanning 2012-02-24 08:56:47

+0

Nah,它們在System.Data.DataSetExtensions中。超級方便。 – 2012-02-24 09:00:02

0

我只是寫了這個作爲一個快速測試 - 從字面上只需要添加新的控制檯應用程序和下面的代碼:

static void Main(string[] args) 
    { 
     var table = new DataTable(); 
     table.Columns.Add("id", typeof(string)); 
     table.Columns.Add("name", typeof(string)); 

     table.Rows.Add(new object[] { 1, "test" }); 

     var item = table.AsEnumerable().Select(row => 
      new { 
       id = row.Field<string>("id"), 
       name = row.Field<string>("name") 
      }).First(); 

     Console.WriteLine(item.name); 
    } 

我只是引用System.DataSystem.Data.DataSetExtensions(well .. and System/System.Core/Microsoft.CSharp/System.Xml/System.Xml.Linq)。問題不在於你發佈的代碼,它存在於我們看不到的地方。你能發佈你所引用的DLL的完整列表嗎?

你絕對不需要參考System.Data.Entity.dll來做你正在做的事情。搜索System.Data.Objects.DataClasses的所有源文件,查看您在Entity Framework庫中引用類的位置。它也可能從您參考的庫中提取。