2012-02-22 58 views
2

我有两个表,这些表在它们之间的数据集删除数据是一个关系:如何从数据集表哪里是关系

DataColumn dc1; 
     DataColumn dc2; 

     dc1 = q.Tables[0].Columns["dateFrom"]; 
     dc2 = q.Tables[1].Columns["dateFrom"]; 
     DataRelation dr = new DataRelation("tracker", dc1, dc2, false); 

现在我想从第一个表中删除所有行是在第二个表中没有数据。我怎样才能做到这一点?

+0

首先返回有效数据会更有意义吗? 'INNER JOIN'可能会更适合你。 – f0x 2012-02-22 11:26:12

回答

1

为什么你会做到这一点吗?在这种情况下,您可能会丢失重要数据(除非您知道这是不必要的内容)。 我假设如果父表中有数据,那么它肯定是因为原因而添加的,或者代码中可能存在问题。看看这个,并尽量避免弄脏数据。

关于你的问题,我会循环通过主要记录,并检查是否有任何父记录。同时比较并确保数据可以被删除。

希望它有帮助。

1

没有测试,但是你可以从下面拿个主意(你甚至可能不会需要设置的关系)

var results = from table1 in q.Tables[0].AsEnumerable() 
       join table2 in q.Tables[1].AsEnumerable() on table1["dateFrom"] equals table2["dateFrom"]     
      select new { 
       dateFrom = table1["dateFrom"], 
       // anyother columns     
       }; 

希望这有助于和好运

克里希纳