我有一些非常簡單的.NET邏輯,我正將其移植到Scala代碼庫中,而我並不真正瞭解Scala的第一件事。它包括一個LINQ查詢組標記對象的集合通過使用匿名類型投影的扁平化和加入,其次爲分組,例如:在Scala中的LINQ SelectMany相當於
var q = things.SelectMany(t => t.Tags, (t, tag) => new { Thing = t, Tag = tag })
.GroupBy(x => x.Tag, x => x.Thing);
在Scala中,它看起來像flatMap
可能是有用的,但我無法弄清楚如何通過匿名將它與groupBy
結合起來。
這種事情在Scala中更加複雜嗎?還是我錯過了一些簡單的東西?
UPDATE:
我結束了去:
things.flatMap(t => t.Tags.map(x => (x,t))).groupBy(x => x._1)
然後當然後來當我在地圖中存取的值,我需要做的事:
.map(x => x._2)
到從組中取出組。
簡單,當你知道如何!
我沒有完全按照你想要完成的工作,你能改正你的C#示例。 SelectMany只接受一個輸入(除了'this'參數的擴展名),你似乎有兩個輸入。此外,你的括號不平衡,並且弄清楚你想讓他們去的地方。 – Danny
我看到你添加了缺少的括號,但你的'SelectMany'有太多的參數源和選擇器方法https://msdn.microsoft.com/en-us/library/bb534336(v=vs.110).aspx但你似乎在提供兩種方法 – Danny
對不起,錯過了一個家長。 – lesscode