我有以下表结构,它被导入到Entity Framework项目中: (注意:我在表1中将T1Name误导为T2Name)
alt text http://digitalsamurai.us/images/drawing2.png
我已经标记了实体对象。多对多联合表Table5表示为EntityCollection< Entity4>。在Entity3中,以及作为EntityCollection< Entity3>在Entity4中(EntityCollection< T>实现IEnumerable< T>,因此可以查询它)。我需要构造一个结果集:
T1Name,T2Name,T3Name
这将导致T1Name和T2Name的重复输入。
有人可以告诉我如何编写这个LINQ查询吗?
感谢您的帮助。
答案 0 :(得分:2)
var q = from e3 in Context.Table3
from e4 in e3.Table4s // that's your many-to-many
select new
{
Name3 = e3.T3Name,
Name2 = e4.Table2.T2Name,
Name1 = e4.Table1.T1Name // presuming Table1.T2Name in your diagram is a typo
};
“点符号”:
var q = Context.Table3
.SelectMany(e3 => e3.Select(e4 =>
new {
Name3 = e3.T3Name,
Name2 = e4.Table2.T2Name,
Name1 = e4.Table1.T1Name
});
注意我根本没有使用join
。这是故意的; you don't need it her如