1

エンティティへのlinqを使用してこれら2つのテーブルからデータを取得しています。テーブル間に主外部キーベースの関係が存在し、結果セットが来ていますが、結果としてすべての行が複数回繰り返されていますが、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 に答える