所以我在一家公司工作,那里有几个名称不同但结构完全相同(日期、时间、值)的表。我希望能够做的是让我的程序(C# 或 LINQ/LINQPad)运行这些表并查询特定的行,这样我就可以确保它们都已正确更新。这可行吗?
到目前为止,我的思路是这样的。知道每个表名都会给它一个不同的类,我试图从表中获取值。我可以使用此处的代码获取表格
DataContext dc = new DataContext();
var myTable = (ITable)dc.GetType().GetProperty("Table").GetValue(dc, null);
我的问题是我正在尝试使用类似的方法从该表中获取列。但是,下面会引发错误:
foreach(var e in myTable)
{
double myValue = (double)e.GetType().GetProperty("Value").GetValue(e, null);
}
所以当我查看 e.GetType() 的所有属性时,我注意到它有 2 个,其中一个是 Context,所以我去那里探索。然而,下一层似乎是元数据的死胡同,没有实际数据从我的循环中出来。我什至在朝着正确的方向前进吗?一旦我克服了这个障碍,我就可以很容易地列出一个 list 并以这种方式得出我的结果。任何帮助,将不胜感激。谢谢。
最佳答案
如果您需要通过主键(数据库上下文中的 EntityKey)查询许多表,则
ObjectContext
有一个名为 GetObjectByKey
的方法,它允许您通过 EntityKey
获取对象
因此,您只需要构造一个 EntityKey。根据MSDN article ,这很简单,
DataContext dc = new DataContext();
EntityKey key = new EntityKey("DataContext.Table","Id", 123);
dynamic entity = dc.GetObjectByKey(key);
您可以创建一个对具有相同结构的所有表(实体)通用的接口(interface),并将您的对象转换为该接口(interface),或者只使用dynamic
。
关于c# - 给定一个表名列表作为字符串,如何一次查询多个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41497262/