gpt4 book ai didi

linq - 如何使用 FLinq 在 F# 中进行外连接?

转载 作者:行者123 更新时间:2023-12-02 09:08:40 25 4
gpt4 key购买 nike

问题几乎说明了一切。我有一个如下形式的大 flinq 查询:

for alias1 in table1 do
for alias2 in table2 do
if alias1.Id = alias2.foreignId

使用这种形式,我如何在这两个表之间进行左外连接?

最佳答案

我认为你可以使用groupJoin Query 中提供的功能模块。以下是使用 Northwind 的示例,其中 Products 作为主表,Categories 作为带外键的表:

open System.Linq

<@ Query.groupJoin
db.Products db.Categories
(fun p -> p.CategoryID.Value)
(fun c -> c.CategoryID)
(fun p cats ->
// Here we get a sequence of all categories (which may be empty)
let cat = cats.FirstOrDefault()
// 'cat' will be either a Category or 'null' value
p.ProductName, if cat = null then "(none)" else cat.CategoryName) @>
|> query

使用seq { .. }肯定有更好的方式来表达这一点。语法并通过使用嵌套 for 实现类似连接的行为循环。不幸的是,LINQ 翻译器的引用可能不支持这些。 (就我个人而言,我更喜欢使用嵌套 for 编写代码并使用 if 检查空集合)。

我只是在研究 PowerPack 库中的一些改进,作为 F# 团队承包工作的一部分,因此希望将来会有所改进......(但不 promise !)

关于linq - 如何使用 FLinq 在 F# 中进行外连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com