문제

I am getting data from these two tables using linq to entities, relationships exist between tables on primary foriegn key basis, result set is coming but every row is repeating multiple times in reult however in Db there are not duplicate rows. Don't understand how to resolve this.

here is piece of code:

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>");
        }
도움이 되었습니까?

해결책

The problem is this:

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

It is a cross join. It matches every course with every unit. It doesn't use any FK/PK because no relation (navigation property) is used in this query. To use the relation you have to modify it to:

var result = from tex in ols.COURSEs
             from another in tex.SomeNavigationProperty  // tex 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top