参数化 LINQ 查询
Parametric LINQ query
这是 accessing dynamic objects in F# 的另一个版本,我使用 let y = x.Where(fun x -> x.City ="London").Select("new(City,Zip)")
参数化查询并提取必要的项目。这些将对应于 SQL 查询中的列,并由数据上下文的 属性 表示。这是我想作为参数传入的部分。
type Northwind = ODataService<"http://services.odata.org/Northwind/Northwind.svc">
let db = Northwind.GetDataContext()
let query2 = query { for customer in db.Customers do
select customer} |> Seq.toArray
let qryfun (x:Northwind.ServiceTypes.Customer) =
query { for x in query2 do
select (x.City,x.CompanyName,x.Country)}
基本上我不仅要传递 x
,还要传递 x.*
。当我访问一个固定的数据库时,我可以分解出 x。但是我现在有 40 个小函数来提取不同的列。是否可以将它分解为一个函数并将 属性 作为参数传递?所以有时我提取 x.City
但其他时候 x.Country
。我试过使用引号,但无法正确拼接,也许这不是正确的方法。
关于引号拼接,这个对我有用:
open System.Linq
type record = { x:int; y:string }
let mkQuery q =
query {
for x in [{x=1;y="test"}].AsQueryable() do
select ((%q) x)
}
mkQuery <@ fun r -> r.x, r.y @>
|> Seq.iter (printfn "%A")
这是 accessing dynamic objects in F# 的另一个版本,我使用 let y = x.Where(fun x -> x.City ="London").Select("new(City,Zip)")
参数化查询并提取必要的项目。这些将对应于 SQL 查询中的列,并由数据上下文的 属性 表示。这是我想作为参数传入的部分。
type Northwind = ODataService<"http://services.odata.org/Northwind/Northwind.svc">
let db = Northwind.GetDataContext()
let query2 = query { for customer in db.Customers do
select customer} |> Seq.toArray
let qryfun (x:Northwind.ServiceTypes.Customer) =
query { for x in query2 do
select (x.City,x.CompanyName,x.Country)}
基本上我不仅要传递 x
,还要传递 x.*
。当我访问一个固定的数据库时,我可以分解出 x。但是我现在有 40 个小函数来提取不同的列。是否可以将它分解为一个函数并将 属性 作为参数传递?所以有时我提取 x.City
但其他时候 x.Country
。我试过使用引号,但无法正确拼接,也许这不是正确的方法。
关于引号拼接,这个对我有用:
open System.Linq
type record = { x:int; y:string }
let mkQuery q =
query {
for x in [{x=1;y="test"}].AsQueryable() do
select ((%q) x)
}
mkQuery <@ fun r -> r.x, r.y @>
|> Seq.iter (printfn "%A")