C# 可以使用F#的LINQ吗?如何使用?
为了访问某些SharePoint数据,我使用了Microsoft.SharePoint.Client库,该库公开了以下api。C#()中有一些用法示例,其中包含以下代码段:C# 可以使用F#的LINQ吗?如何使用?,c#,linq,sharepoint,f#,c#-to-f#,C#,Linq,Sharepoint,F#,C# To F#,为了访问某些SharePoint数据,我使用了Microsoft.SharePoint.Client库,该库公开了以下api。C#()中有一些用法示例,其中包含以下代码段: ClientContext context = new ClientContext("http://SiteUrl"); Web web = context.Web; context.Load(web.Lists, lists => lists.Include(list => li
ClientContext context = new ClientContext("http://SiteUrl");
Web web = context.Web;
context.Load(web.Lists,
lists => lists.Include(list => list.Title, // For each list, retrieve Title and Id.
list => list.Id));
Load方法的签名为()
公共空荷载(
T clientObject,
参数表达式[]检索
)
其中T:ClientObject
Fsharp编译器期望第二个参数的类型为
Linq.Expressions.Expression<Func<'a,obj>>
Linq.Expressions.Expression>[]
我可以使用F#中的Load
方法吗?如何使用
有一个相关的答案
但我无法将给定代码示例解决方案转换为上述c#示例。
也许有人能帮忙?
涉及的类型有
list:ListCollection
和list:list
这是未测试的,因为我没有SharePoint服务器,但是
open System.Linq.Expressions
type Expr =
static member Quote(e:Expression<System.Func<_, _>>) = e
并使用它们来避免函数调用变得不可读
context.Load(web.Lists,
Expr.Quote(fun (lists : ListCollection) -> lists.Include(getTitle, getId) :> obj))
工作起来很有魅力。非常感谢你!给出的这个问题的答案对Sharepoint开发人员特别有用。它包含了关于F#lambdas to LINQ的更一般性问题中没有的关键细节。投票重新开放。
open System.Linq.Expressions
type Expr =
static member Quote(e:Expression<System.Func<_, _>>) = e
let getTitle = Expr.Quote(fun (list : List) -> list.Title :> obj)
let getId = Expr.Quote(fun (list : List) -> list.Id :> obj)
context.Load(web.Lists,
Expr.Quote(fun (lists : ListCollection) -> lists.Include(getTitle, getId) :> obj))