【问题标题】:LINQ to Entities does not recognize the method ElementAt[WebSecurity.CurrentUserId]LINQ to Entities 无法识别方法 ElementAt[WebSecurity.CurrentUserId]
【发布时间】:2013-04-19 10:10:29
【问题描述】:
@accounts.UserProfiles.ElementAt(item.AuthorID).ProfilePicture

LINQ to Entities 无法识别该方法 '碰撞.模型.用户配置文件 ElementAt[UserProfile](System.Linq.IQueryable`1[Collision.Models.UserProfile], int32)' 方法,并且这个方法不能翻译成store 表达。

【问题讨论】:

    标签: linq-to-entities


    【解决方案1】:

    LINQ to Entities 不支持ElementAtElementAtOrDefault

    您可以在 MSDN 上找到所有支持的方法列表:Supported and Unsupported LINQ Methods (LINQ to Entities)

    【讨论】:

      【解决方案2】:

      ElementAt(x)ElementAtOrDefault(x)受支持:.NET 3.5.NET 4.5

      但是,你可以使用

      source.Skip(x).First() 
      

      或分别

      source.Skip(x).FirstOrDefault() 
      

      达到类似的效果。

      请注意,Skip() 要求对其源进行排序(使用“OrderBy”子句)。

      【讨论】:

      • 它帮助我在 cshtml 中做到了:@{int counter = 0;} @foreach(...) { source.Skip(counter).First() //Do something counter = counter +1;}
      • @MuratMercan 你是说这是一个错误吗?如果您想要第一个元素 (x=0),您可以使用 .ElementAt(0),这与 .Skip(0).First() 相同,而不是 .Skip(-1).First()
      • 嗨,克里斯蒂,你绝对是对的,在评论它之前我没有想到那个低谷,它为我的库带来了一些修复方法:)
      猜你喜欢
      • 2011-01-21
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      • 2012-04-03
      • 2021-11-06
      • 2012-05-03
      相关资源
      最近更新 更多