我希望使用oledb GetSchema方法查询名称以数据库中的特定字符串开头的所有现有表。 换句话说,我正在寻找以下sql查询的等价物:
SELECT * FROM information_schema.tables WHERE table_name LIKE 'customer%'
类似的东西:
String[] tableRestrictions = new String[4];
tableRestrictions[2] = "%customer";
DataTable customerTables = conn.GetSchema("Tables", tableRestrictions );
答案 0 :(得分:1)
在这种情况下,我想要查询的表名是Dynamic。因此我需要先得到整个表名。
似乎没有有效的方法来做到这一点,但使用迭代。 我得出结论,使用Linq提供了最好的解决方案(感谢Tim's answer to a similar case):
// Get the tables using GetSchema:
dtbTables = dbConnection.GetSchema("tables");
// use linq to get the table whose name matches the criteria:
DataRow recSpecificTable = dbConnection.GetSchema("Tables").AsEnumerable()
.Where(r => r.Field<string>("TABLE_NAME")
.StartsWith("customer")).FirstOrDefault();
// Now the table name I am looking for:
tableName = Convert.ToString(recSpecificTable["TABLE_NAME"]).Trim();