LINQ to Entities 无法识别方法 ElementAt[WebSecurity.CurrentUserId]

Posted

技术标签:

【中文标题】LINQ to Entities 无法识别方法 ElementAt[WebSecurity.CurrentUserId]【英文标题】:LINQ to Entities does not recognize the method 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 表达。

【问题讨论】:

【参考方案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() 嗨,克里斯蒂,你绝对是对的,在评论它之前我没有想到那个低谷,它为我的库带来了一些修复方法:)

以上是关于LINQ to Entities 无法识别方法 ElementAt[WebSecurity.CurrentUserId]的主要内容,如果未能解决你的问题,请参考以下文章

LINQ to Entities 无法识别方法“布尔包含 [Int32]

LINQ to Entities 无法识别方法 IsNullOrWhiteSpace

错误:LINQ to Entities 无法识别方法 DataLength

LINQ To Entities 无法识别方法 Last。真的吗?

LINQ To Entities 无法识别方法 Last。真的吗?

C# LINQ to Entities 无法识别方法“布尔”