【问题标题】:Loop through table of datacontext循环遍历数据上下文表
【发布时间】:2023-03-04 19:53:02
【问题描述】:

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

到目前为止,我已经制作了一个方法来比较两行的值,如果行的所有值都相等,则返回 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 循环的任何帮助或提示将不胜感激。

【问题讨论】:

  • 旁注:您可以使用or 查询这两个条件,并检查不同的结果是否包含 1 行。

标签: c# linq-to-sql foreach


【解决方案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

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 2013-05-13
    • 2014-06-14
    • 1970-01-01
    相关资源
    最近更新 更多