0
特定のテーブルのスキーマを取得しようとしていますが、カラムがnullになっています。私はクラスの下に、この中で結果を取得しようとしています特定のテーブルのカラムが取得されない
:
public class Tables
{
public string Name { get; set; }
public string[] Columns { get; set; }
}
コード:
string[] selectedTables = { "Table1", "Table2"};
var conectionString = new SqlConnection("MyconnectionString");
var data = new List<Tables>();
data = conectionString.GetSchema("Tables").AsEnumerable()
.Select
(
t => new Tables
{
Name = t[2].ToString(),
Columns = conn.GetSchema("Columns",
new string[] { databaseName,t[2].ToString() }).AsEnumerable() // t[2].ToString() represent tablename
.Where(c => selectedTables.Contains(t[2].ToString()))
.Select(c => c[3].ToString()).ToArray() // c[3].ToString() represent Columns
}).ToList();
return data;
データに私はテーブルすなわちTable0,Table1,Table2,Table3
などのリストを取得していますが、私はこのTable1 and Table2
選択されたテーブルの列を取得していません。
更新:私はこのような何かを探しています:
// You can specify the Catalog, Schema, Table Name, Table Type to get
// the specified table(s).
// You can use four restrictions for Table, so you should create a 4 members array.
String[] tableRestrictions = new String[4];
// For the array, 0-member represents Catalog; 1-member represents Schema;
// 2-member represents Table Name; 3-member represents Table Type.
// Now we specify the Table Name of the table what we want to get schema information.
tableRestrictions[2] = "Course";
DataTable courseTableSchemaTable = conn.GetSchema("Tables", tableRestrictions);
data = conectionString.GetSchema("Tables").AsEnumerable()
.Select
(
t => new Tables
{
Name = t[2].ToString(),
Columns = (from useTable in selectedTables
let columns = conn.GetSchema("Columns",new string[] { databaseName, t["TABLE_SCHEMA"].ToString(), useTable })
select new { columns[3]}) //Error
}).ToList();
は、どのように私は私のselectedTablesを注入していますか?
私を怒らせて、このように助けてください:) –