一种方法,可以称之为困难的方法,是使用Linq的扩展方法来构建连接组合。通过这种方式,您可以循环遍历您的集合(表),并添加必要的内容。
例如,这段代码:
from t1 in Table1
join t2 in Table2 on t1.ID equals t2.ID
join t3 in Table3 on t2.ID equals t3.ID
select new { t1, t2, t3 }
可以重写为(使用 LinqPad 很容易实现):
var query = Table1
.Join (
Table2,
t1 => t1.ID,
t2 => t2.ID,
(t1, t2) => new { t1 = t1, t2 = t2 }
)
.Join (
Table3,
temp0 => temp0.t2.ID,
t3 => t3.ID,
(temp0, t3) => new { t1 = temp0.t1, t2 = temp0.t2, t3 = t3 }
)
;
这可以进行拆分,我认为您可以在循环遍历一组集合(t1/t2/t3)时使其正常工作。
var query1 = Table1
.Join (
Table2,
t1 => t1.ID,
t2 => t2.ID,
(t1, t2) => new { t1 = t1, t2 = t2 }
);
var query2 = query1
.Join (
Table3,
temp0 => temp0.t2.ID,
t3 => t3.ID,
(temp0, t3) => new { t1 = temp0.t1, t2 = temp0.t2, t3 = t3 }
);
这不是一个完整的解决方案,但这是我试图解释的想法。
因此,您可以在循环一组集合时执行相同的操作,而不是“硬编码”查询1、查询2等。
听起来很困难,我确定它确实是。