【问题标题】:LINQ to Entities does not recognize the method 'Int32 Next()' method [duplicate]LINQ to Entities 无法识别“Int32 Next()”方法 [重复]
【发布时间】:2016-09-07 06:29:46
【问题描述】:

我写了这个方法:

 var resultVideos = (from video in db.Tbl_Videos
                            where channelName != "" ? video.Tbl_Categories.Tbl_Channels.Title.Equals(channelName) : true
                            select video)
                           .Where(video => categoryName != "" ? video.Tbl_Categories.Title.Equals(categoryName) : true)
                           .OrderBy(video => random.Next()).Take(8);

我知道提供者无法将它们转换为表达式树,所以我试试这个:

 .OrderBy(video => (int)random.Next()).Take(8);

但是不行,有什么解决办法?

【问题讨论】:

  • EF 提供程序如何将任意方法调用转换为 SQL?您对此有何期待?如果您只想要随机顺序,请查看可能的重复。
  • 试试.ToList().OrderBy(video => random.Next()).Take(8); 而不是.OrderBy(video => random.Next()).Take(8);

标签: c# linq


【解决方案1】:

可能值得看看下面的答案:

总而言之,您似乎想使用OrderBy(video => Guid.NewGuid()) 而不是OrderBy(video => rnd )。但是,其他用户说这会导致过滤在客户端完成,所以我会记住这一点!

【讨论】:

    猜你喜欢
    • 2020-07-23
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多