由于没有深入了解 Sprache,我已经超级简化了示例以了解问题域。
以这个多 from 语句的例子(使用 LinqPad)为例,我们只对from的一个值感兴趣。所以在这个任意的例子中,我们想知道人和蛋糕的所有组合,但只对蛋糕的名字感兴趣。
var people = new List<string> {
"Billy", "Jimmy"
};
var cake = new List<string> {
"Carrot Cake", "Chocolate Cake"
};
(from p in people
from c in cake
select new
{
c
}).Dump();
多个 from 语句可以被认为是嵌套的 foreach 循环,最终成为一个交叉连接(如此处讨论的LINQ Join with Multiple From Clauses)
所以让我们假设这是 Sprache 的作者的意图,如果我们尝试用流畅的语法重写它(如这里讨论的:https ://codeblog.jonskeet.uk/2011/01/28/reimplementing-linq-to- objects-part-41-how-query-expressions-work/)它最终成为一个SelectMany().
我们最终得到类似的东西:
people.SelectMany(p => cake, (p, c) => new { c }).Dump();
你仍然以“人”参数结束。
所以我建议为了保持 Sprache 的意图,没有办法没有 __ 语句。除非也许自己建立表达式树,但我无法想象那会是富有成效的。