首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ODataService类型提供程序的可为No的整型不存在属性“”HasValue“”

ODataService类型提供程序的可为No的整型不存在属性“”HasValue“”
EN

Stack Overflow用户
提问于 2013-01-13 04:55:18
回答 1查看 470关注 0票数 6

我正在尝试使用Netflix的ODataService类型提供程序。这可以很好地工作:

代码语言:javascript
复制
type internal NetflixData = ODataService<"http://odata.netflix.com/Catalog/">
let internal NetflixContext = NetflixData.GetDataContext()

let godzillamovies = query { for t in NetflixContext.Titles do 
                             where (t.Name.Contains "Godzilla")
                             select (t.Name, t.ReleaseYear)
                           } |> Seq.toList

但返回哥斯拉电视剧的所有剧集,没有发行年份(嘘)。因此,我将我的查询更新为:

代码语言:javascript
复制
let godzillamovies = query { for t in NetflixContext.Titles do 
                             where (t.Name.Contains "Godzilla" && t.ReleaseYear.HasValue)
                             select (t.Name, t.ReleaseYear.Value)
                           } |> Seq.toList

我遇到了以下错误:

代码语言:javascript
复制
<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>
<error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\">
  <code></code>
  <message xml:lang=\"en-US\">No property 'HasValue' exists in type 'System.Nullable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' at position 45.</message>
</error>

呃,HasValue不存在于可为空的整数吗?自从..。什么时候?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-13 05:29:50

代码语言:javascript
复制
#r "FSharp.Data.TypeProviders"
#r "System.Data.Services.Client"

open Microsoft.FSharp.Data.TypeProviders
open Microsoft.FSharp.Linq.NullableOperators

type internal NetflixData = ODataService<"http://odata.netflix.com/Catalog/">
let internal NetflixContext = NetflixData.GetDataContext()

NetflixContext.DataContext.SendingRequest.Add(fun e -> printfn "%A" e.Request.RequestUri)

// http://odata.netflix.com/Catalog/Titles()?$filter=substringof('Godzilla',Name) and (ReleaseYear ne null)&$select=Name,ReleaseYear
let godzillamovies = query { for t in NetflixContext.Titles do 
                             where (t.Name.Contains "Godzilla")
                             where (t.ReleaseYear ?<>? System.Nullable())
                             select (t.Name, t.ReleaseYear)
                           } |> Seq.toList
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14297860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档