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 不支持ElementAt
和ElementAtOrDefault
。
您可以在 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。真的吗?