列名无效虽然它在那里!

Red*_*eda 0 c# sql

我正在尝试打印出来自DB的表,其中EntityId列等于DataclassId列,这里是代码

    public void getRootTables_checkSP()
    {
        string connect = "Data Source= EUADEVS06\\SS2008;Initial Catalog=TacOps_4_0_0_4_test;integrated security=SSPI; persist security info=False;Trusted_Connection=Yes";
        SqlDataReader rootTables_List = null;
        SqlConnection conn = new SqlConnection(connect);
        conn.Open();

        SqlCommand s_cmd = new SqlCommand("SELECT * FROM sys.Tables WHERE EntityId = DataclassId", conn);
        rootTables_List = s_cmd.ExecuteReader();

        while (rootTables_List.Read())
        {
            string test = rootTables_List[0].ToString();
            Console.WriteLine("ROOT TABLES ARE {0}", test);
        }
        rootTables_List.Close();
        conn.Close();
    }
Run Code Online (Sandbox Code Playgroud)

但它一直说这些列无效,但是当我打印出数据库"syscolumns"中的所有列时,它们就在那里......

谁能告诉我为什么我会收到这样的错误?

编辑

我真正想要的是查询db TacOps_4_0_0_4_test而不是系统.我才意识到这一点

编辑2

这是我的数据库中的表的示例

Table_1
ID  Sequence    Type    Heigh  Weight   EntityId    DataclassId
0   1           s       1.4     2.5     42-2c-Qi    42-2c-Qi
1   2           s       2.4     2.5     zh-km-xd    zh-km-xd
2   3           s       3.4     2.5     8n-tr-l7    8n-tr-l7

Table_2
ID  Data    Person    EntityId    DataclassId
0   1        Dave     58-zj-4o    41-2c-Q7
1   2        Sara     99-op-t6    oy-7j-mf
2   3        Silve    75-qy-47    2d-74-ds

Table_3
ID  Name    Genre   EntityId    DataclassId
0   LR      Ac      78-jd-o9    78-jd-o9
1   OI      Dr      4t-jb-qj    4t-jb-qj
2   DH      Do      7j-3e-ol    7j-3e-ol
Run Code Online (Sandbox Code Playgroud)

输出应该是

Table_1
Table_3
Run Code Online (Sandbox Code Playgroud)

Fre*_*els 6

EntityId和DataclassId确实没有sys.tables中存在的列.

你正在从sys.tables中选择数据,你的查询中没有syscolumns的概念,所以我不知道为什么你在解释中提到'syscolumns'?