首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OData请求类型

使用OData请求类型
EN

Stack Overflow用户
提问于 2010-10-14 02:10:39
回答 2查看 429关注 0票数 0

我正在尝试创建一个LINQ查询,以返回movieid的类型。LINQ在LINQPAD4中工作。有人能帮我掌握正确的语法吗?我收到以下错误:

不能隐式地将'System.Linq.IQueryable‘类型转换为'System.Linq.IQueryable’。存在显式转换(是否缺少强制转换?)

不能隐式地将类型“System.Collections.Generic.List”转换为“System.Collections.Generic.List”

代码:(注意,我在下面的一行中用括号包装了标题,但实际上是代码中的括号。

公共列表(体裁)GetGenresByMovieId(弦乐电影)

{

MovieCatalog.Titles中的var类型= from t

t.Id == "BVlLx“

选择t.Genres;返回genres.ToList();

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-14 06:13:48

正确的查询将类似于

代码语言:javascript
复制
public IEnumerable<Genre> GetGenresByMovieId(string movieId)
{
    return from title in ctx.Titles
           from genre in title.Genres
           where title.Id == "BVlLx"
           select genre;
}

在方法调用语法中,您需要使用SelectMany,而不是选择,因为标题的过滤器返回一个标题列表(标题总是包含一个标题,但编译器不知道),因此您希望“连接”结果中每个标题的所有类型。

返回类型实际上是IQueryable,但是如果您只计划对其进行枚举,则可以使用IEnumerable或调用ToList()强制在方法中强制执行(就像我写它的方式--查询只有在尝试枚举它时才会实际执行)。

票数 0
EN

Stack Overflow用户

发布于 2010-10-14 02:34:35

你的问题是你的投射:

代码语言:javascript
复制
select new { Name = g.Name }

即将查询投影到匿名类型中。

您需要将项目投影到您声明的IQueryable中(IQueryable<Genre>)

在使用LINQ查询时,最好使用隐式类型变量(var)。

另外,不知道为什么查询中有额外的"from“,您不需要这样做。

像这样的事情应该有效:

代码语言:javascript
复制
var genres = from t in MovieCatalog.Titles
             where t.Id = "BVlLx"
             select t.Genres;

return genres.ToList();

var genres应该输入到IQueryable<Genre>中。

这是假设您想要返回一个类型对象的集合。

如果你只想知道名字,就这样做:

代码语言:javascript
复制
select t.Genres.Name

但这将返回字符串对象的集合(应该将var genres键入到IQueryable<string>)。

但是,我对NetFlix OData API一无所知,但这应该会使您走上正确的轨道。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3929554

复制
相关文章

相似问题

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