2012-02-20 82 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库中引用类的位置。它也可能从您参考的库中提取。