一种方法(可能被标记为困难方法)是使用 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 }
);
不是一个完整的解决方案,但这是我试图解释的想法。
因此,您可以在循环一组集合时执行相同的操作,而不是“硬编码”query1、query2 等。
听起来很难,我相信它会是。