1

我想做的是,遍历数据上下文并为找到的每个表选择两个不同的行并比较各个列并查看行是否相等。

到目前为止,我已经制作了一种方法来比较两行的值,如果行的所有值都相等,则返回 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(),但我看不出这如何让我更接近 - 我只能在数据上下文中获取表名,不是表本身。有没有办法从包含表名的字符串中获取表实体?或者我错过了什么(可能是显而易见的)?

任何有关上述foreach循环的帮助或提示将不胜感激。

4

1 回答 1

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

于 2013-08-27T09:14:15.777 回答