2014-09-22 26 views
1

我使用LinqPad连接到sql server。有一个标准的数据库Northwind和表Product。我需要获取表属性信息动态(从客户端控制台输入读取表名)。不幸的是,LinqPad隐藏了表的真实类型。我怎么尝试,它总是返回null。LinqPad无法返回正确的表格类型

请注意,这个问题与其他人不一样。我需要获取与“产品”等用户输入表名称相关的表格属性。挑战部分是我不需要获取字符串“LINQPad.User.Products”属性,但我确实需要获取表LINQPad.User.Products属性。问题的答案Get properties and values from unknown object 无法解决我的问题。其实我的问题与这个答案是一样的,只是代码格式不同。

var propertyInfo = (Type.GetType(fullTableName)).GetProperties(); 

var tableName = Console.ReadLine(); 
string fullTableName = "LINQPad.User." + tableName; 
var propertyInfo = (Type.GetType(fullTableName)).GetProperties(); 

+0

http://stackoverflow.com/questions/4144778/get-properties-and-values-from-unknown-object – MethodMan 2014-09-22 19:18:04

+0

@DJ KRAZE,你引用的方式可以得到一个字符串“LINQPad.User.Products”属性,但我需要获得类型LINQPad.User.Products属性。 – 2014-09-22 19:47:47

+0

@paqogomez,“从未知对象获取属性和值”与我的问题不同! – 2014-09-22 19:49:44

回答

2

要获得的属性,你可以使用沿此线的东西...

void Main() 
{ 
    string tableName = Console.ReadLine(); 

    Type.GetType("UserQuery").GetProperty(tableName) 
          .PropertyType 
          .GenericTypeArguments 
          .First() 
          .GetProperties() 
          .Dump("The properties of the " + tableName + " table"); 

} 
+0

@感谢Aydin Adn先生。你拯救了我的生命。 – 2014-09-22 20:56:59

+0

@Matthew你最欢迎:) – 2014-09-22 21:02:09

1

你应该能够做到这一点是这样的:

this.GetType().GetProperty("Products").PropertyType.GetProperties().Dump(); 

要进行测试,您可以用下面的比较吧:

Products.GetType().GetProperties().Dump(); 

,你会得到相同的结果。

+0

感谢您的回答,您提供的两行代码得到相同的结果。但我需要的结果可以是typeof(Products).GetProperties()。Dump();如何改变你的代码到这个? – 2014-09-22 20:48:40