LINQ查询在将.ToArray()放在from/in内部时性能较差。
LINQ查询在将.ToArray()放在from/in内部时性能较差。
这个问题已经在这里有了答案:
// the following approach takes sooooooo long var result = ( from t in ( from a in ctx.t1 from b in ctx.t2 where a.id == b.id select new { a, b } ).ToArray() from c in ctx.t3.ToArray() where c.name.Contains(t.a.name) select new { t.a, t.b, c } ).ToArray(); // while the following approach takes time in seconds var tSet = ( from a in ctx.t1 from b in ctx.t2 where a.id == b.id select new { a, b } ).ToArray(); var cSet = ctx.t3.ToArray(); var result = ( from t in tSet from c in cSet where c.name.Contains(t.a.name) select new { t.a, t.b, c } ).ToArray();
请考虑上述代码。就我所知,这两种方法与数据集 (t1
和 t2
) 以及两种方法中的 t3
在应用 \"second\" 子句之前都将被计算。
然而,实际情况是第一种方法比第二种方法慢得多。我可以知道为什么吗?
预先感谢你。
admin 更改状态以发布 2023年5月21日