我想要做的是,遍历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
循环的任何帮助或提示都将非常感激。
答案 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