1

我正在使用 linq 到实体从这两个表中获取数据,表之间存在基于主外键的关系,结果集即将到来,但每一行都重复多次,但是在 Db 中没有重复的行。不明白如何解决这个问题。

这是一段代码:

StringBuilder sb = new StringBuilder();
        string text = txtBoxSearch.Text;
        OLSContainer ols = new OLSContainer();
        var result = from tex in ols.COURSEs
                     from another in ols.UNITs
                     where tex.courseName.Contains(text) || tex.description.Contains(text) || another.unitName.Contains(text)
                     select new { tex,another };

        foreach (var cours in result)
        {
            sb.AppendLine("<h2 id='" + cours.tex.courseID + "'><a href='admin.aspx?id='" + cours.tex.courseID + "''>" + cours.tex.courseName + "</a></h2>");
        }

        foreach (var cours in result)
        {
            sb.AppendLine("<h2 id='" + cours.another.unitID + "'><a href='admin.aspx?id='" + cours.another.unitID + "''>" + cours.another.unitName + "</a></h2>");
        }
4

1 回答 1

1

问题是这样的:

var result = from tex in ols.COURSEs
             from another in ols.UNITs

这是一个交叉连接。它使每门课程与每个单元相匹配。它不使用任何 FK/PK,因为此查询中未使用任何关系(导航属性)。要使用关系,您必须将其修改为:

var result = from tex in ols.COURSEs
             from another in tex.SomeNavigationProperty  // tex 
于 2013-01-04T15:24:54.873 回答