循环通过datacontext表

时间:2013-08-26 10:04:34

标签: c# linq-to-sql foreach

我想要做的是,遍历datacontext并找到每个表,选择两个不同的行并比较各列,看看行是否相等。

到目前为止,我已经制作了一个方法来比较两行的值,如果所有行的值都相等,则返回true。

现在我想把这个方法放在foreach循环中,沿着下面的线条概述:

using (DataClassesDataContext db = new DataClassesDataContext(Utillities.dbconnection))
{
    foreach (Table t in db)
    {
        var row1 = from r1 in t where r1.id == constraint1 select;
        var row2 = from r2 in t where r2.id == constraint2 select;

        bool compResult = CompareRows(row1, row2);
    }
}

但我不知道如何构建foreach循环,所以我可以做出上述选择:( 我已经尝试了db.Mapping.GetTables(),但是我看不出它如何让我更接近 - 我只能在datacontext中获取表名,而不是表本身。有没有办法从包含表名的字符串中获取表实体?或者我错过了什么(可能是显而易见的事情)?

对上述foreach循环的任何帮助或提示都将非常感激。

1 个答案:

答案 0 :(得分:1)

除非为每种可用类型的组合实现CompareRows,否则这将无效。你不能使用匿名类型。

您可以使用此方法获取所有表/列 http://blogs.msdn.com/b/jomo_fisher/archive/2007/07/30/linq-to-sql-trick-get-all-table-names.aspx

我会创建动态sql语句并使用DB.Executequery insted