Kotlin中的语言综合查询?

时间:2018-05-24 12:06:24

标签: linq kotlin

我正在向Kotlin移植一个​​使用linq某些功能的C#项目。举个例子,我们可以看一下linq查询:

from a in A
from b in B
from c in C
select fun(a,b,c);

在C#中,这允许链接任何类型的函数,然后以易于阅读的方式收集结果,这可能是非常需要的。 这相当于(或多或少):

A.SelectMany(a => B, (a, b) => new {a, b}).SelectMany(t => C, (t, c) => fun( t.a, t.b, c));

在Kotlin中实现Enumerable.SelectMany的功能并不是一个问题,但它仍然像C#等效一样嘈杂。

有什么方法可以在Kotlin中实现类似的东西,而不会使用嵌套元组进行详细说明,但更接近linq?

1 个答案:

答案 0 :(得分:2)

@MarkTopolnik提供以下内容作为评论,但它实际上是一个有效的解决方案:

A.flatMap { a -> 
    B.flatMap { b -> 
        C.map { c -> 
            fun(a, b, c) 
        } 
    } 
}