如何在表名中使用通配符来获取GetSchema方法?

时间:2016-01-18 19:11:05

标签: c# sql oledb

我希望使用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 );

1 个答案:

答案 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();