查询1 需求:每一行返回子表的单个记录
from a in table_A
join b in table_B on a.Id Equals b.Id
select new {Name=a.Name,Sex=b.Sex}
查询2 需求:每一行返回子表的多个记录
from a in table_A
select new {Name=a.Name,Sex=String.Join(",",
(from b in table_b where a.Id == b.Id select b.Sex).ToArray())}
如果B表 要根据 A表 Id字段 返回多行数据则需要用到查询2.
仔细琢磨下,想到了数组...
说明:
select new {Name=a.Name,Sex=String.Join(",",
(from b in table_b where a.Id == b.Id select b.Sex).ToArray()) }
逐行扫描的返回的对象
而在实例该对象属性时,Sex属性进行了B表的全表扫描 然后返回 b.Sex
倘若返回又是一个对象,该对象其属性之一又要扫描C表..大概就是这个意思吧