【发布时间】:2012-12-07 01:07:10
【问题描述】:
我刚开始学习一些 Odata,在我提出的一些问题上需要帮助。
让我们举 2-3 个 Linq 查询的例子。 (注意:查询列表)
1) var one = Users.Single(s => s.ID == 1).Sources.Where(s =>s.Genre.Name == "Sport").ToList();
2) var second = TvSchedules.Where(s => s.Date.Day == DateTime.Today && s.Source.Type == "Channel"). Select(s => new {s.Media.Title,s.Media.Details.Description,s.Media.Images.FirstOrDefault(a=>a.ID==s.Media.ID).Link, s.Source.Sign}).ToList();
3) var third = TvSchedules.Where(s => s.Date < week && s.Media.Metadata.Select(a => a.IsHD).Contains(true)).Select(s => new { s.Media.Title, s.Media.Details.Description, s.Media.Images.FirstOrDefault().Link, s.Media.Metadata.FirstOrDefault().PriceSD, s.Media.RTRating }).ToList();
这些查询是为了什么? (注意:解释查询列表)
1) I am selecting all Sources from User with ID=1 where source genre = 'Sport' ( I use User and Sources database tables )
2) I am querying only TVSchedules from Today where TVSchedules.Sources.Name = 'Channel' and I am selecting from TvSChedules.Media ( Title ), TvSchedules.Media.Details( Description), TvSchedules.Media.Images( Link ), TvSchedules.Source.Sign
In TvSchedules database table I have 2 FK ( MediaID, SourceID )
3) Like the second one, but I add some filters. I want to check if TvSchedules.Media.Metadata.isHd ==true
我的问题 (注意:问题基于上述查询)
问题 A) 这些查询在 Linq 中是否正确?我不确定多对多关系。
例如,在第三个示例中,媒体和元数据之间存在多对多关系( TvSchedules.Where(s => s.Date a.IsHD).Contains(true)) ) 。我只需要选择 TvSchedules 日期 。
我的 TvSchedules 表如下所示
ID MediaID SourceID Date
-- ------ -------- ----
问题 B)如何在 ODATA(开放数据协议)查询中翻译这些查询?
1) /Users(1)/AvailableSources?&filter=Genres eq 'Sport'
2) /TvSchedules?&filter=Date eq '@today'?$expand=Media,Details,Images?$select=Title,Description,Link
3) ?
谢谢
【问题讨论】:
-
检查查询是否正确的最佳方法是实际运行它们。您是否在运行时遇到问题?
-
问题是我还没有数据库中的项目。我试图根据我上面写的 linq 查询来确定我的 odata 查询是否良好。
标签: c# sql linq entity-framework odata