我使用linq到实体从这两个表中获取数据,在主要foriegn密钥基础上的表之间存在关系,结果集即将到来,但每行在reult中重复多次,但在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>");
}
答案 0 :(得分: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