link中使用let的好处是什么?既然有select为什么还要let呢?

link中使用let的好处是什么?既然有select为什么还要let呢?

一个是代码简洁,一个是避免重复计算:
var query = from x in a
where x.x1 == x.id * 2 && x.x2 = x.id * 2
select x
在这里x.id * 2就要算两次
var query = from x in a
let c = x.id * 2
where x.x1 == c && x.x2 = c
select x
这样只要算1次,而且代码更清晰