DocumentDB在C#中有一个walk-though和示例项目,我正在FSharp中完成.第一个任务之一是找到现有的数据库.C#代码是这样的
var database = client.CreateDatabaseQuery().Where(db => db.Id == "FamilyRegistry").ToArray().FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
我试图在FSharp中做同样的行,但我没有得到.Where,即使我引用相同的库.相反,我得到这个:
我在想这个问题错了吗?提前致谢.
Pan*_*vos 15
Linq并不特定于C#.即使在C#中,你需要添加一个参考System.Linq.dll
和using System.Linq;
声明.C#项目模板已包含这些语句.
在F#中,您需要执行相同的操作,确保您的项目具有对System.Linq的引用并添加open System.Linq
语句
至少有两种惯用方式:
您可以使用Seq模块的函数与管道运算符实现与方法链接相同的结果,例如:
let random = new System.Random()
Seq.initInfinite (fun _ -> random.Next())
|> Seq.filter (fun x -> x % 2 = 0)
|> Seq.take 5
|> Seq.iter (fun elem -> printf "%d " elem)
printfn ""
Run Code Online (Sandbox Code Playgroud)
seq<'T>
是一个同义词,IEnumerable<T>
如果将方法应用于IQueryable,它将强制查询的执行.
您可以使用Query Expressions,相当于LINQ的类SQL语法:
let countOfStudents =
query {
for student in db.Student do
select student
count
}
Run Code Online (Sandbox Code Playgroud)
query
返回一个正确的 IQueryable<T>
您的具体查询可能是这样的:
let database =
query {
for db in client.CreateDatabaseQuery()
where db.Id == "FamilyRegistry"
select db
headOrDefault
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1731 次 |
最近记录: |