作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题几乎说明了一切。我有一个如下形式的大 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/
我正在尝试通过 f# linq 不幸地创建一个“IN CLause” - 但似乎无法得到它。我尝试了两种选择: 作为序列表达式的一部分迭代天数列表: let getHistoricalQuotes (
在 C# 中执行 linq-to-sql 时,您可以这样做: var data = context.MyTable.Where(x => x.Parameter > 10); var q1 = dat
问题几乎说明了一切。我有一个如下形式的大 flinq 查询: for alias1 in table1 do for alias2 in table2 do if alias
我是一名优秀的程序员,十分优秀!