2011-12-12 75 views
1

我有follofing代码:循环通过ITable LINQ.Data的LINQ to SQL

... 
string curTable = "DTMConsole.DataModels"; 

var s = wtcDb.GetTable(Type.GetType(curTable)); 

PropertyInfo[] pList = s.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public); 

    foreach (var p in pList) 
    { 
     System.Console.Write(p.GetValue(s, null).ToString()); 
    } 

...

wtcDb是一个DataContext。 DataModels是一个实体表。我试图获取s中所有元素(属性)的列表。但它简单不起作用。我得到2个属性。 1是DataContext的名称,另一个是Bool(只读)。但是类DataModels更广泛。 如何通过ITable正确迭代,即使传入参数不是强类型?

+0

我想添加。试图通过s变量进行迭代,但它给了我一个Sqlexception。提供者:SQL网络接口,错误:26 –

回答

1

您正在引用ITable的属性。

var s = wtcDb.GetTable(Type.GetType(curTable)); 
    PropertyInfo[] pList = s.ElementType.GetProperties(BindingFlags.Instance | BindingFlags.Public); 

    foreach (var obj in s) 
    { 
     foreach (var p in pList) 
     { 
      Console.WriteLine(p.GetValue(obj, null)); 
     } 
    } 
+0

好吧,以及如何引用DTMConsole.DataModels实体属性。我需要这个没有硬编码。 –

+0

我需要通过传递Tablename(实体名称)来读取实体的所有值。我使用GetTable来检索表,但由于我不知道在运行时的类名,我通过curTable加载类名称,并假设结果只是一个具有一些属性和方法的对象..这就是我想要实现 –

+0

我认为datacontext的GetTable方法已经创建了我需要的DataModels实体的一个实例,并用数据填充它。 –