C# 从IQueryable中查找元素的索引
嗨,我正在试图从IQueryable中找到特定元素的位置。我不想隐藏到列表,然后搜索它,因为如果元素的数量很大,那么这个过程很繁重 我尝试了.TakeWhile(x=>x.ItemId.Equals(ItemId)),但它显示的函数不受支持。 下面是我现在如何通过查询使用循环来完成它。有没有更好的方法C# 从IQueryable中查找元素的索引,c#,sitecore,iqueryable,C#,Sitecore,Iqueryable,嗨,我正在试图从IQueryable中找到特定元素的位置。我不想隐藏到列表,然后搜索它,因为如果元素的数量很大,那么这个过程很繁重 我尝试了.TakeWhile(x=>x.ItemId.Equals(ItemId)),但它显示的函数不受支持。 下面是我现在如何通过查询使用循环来完成它。有没有更好的方法 IQueryable<CustomSearchResultItem> contextQueryable = context.GetQueryable<CustomSearchRe
IQueryable<CustomSearchResultItem> contextQueryable = context.GetQueryable<CustomSearchResultItem>().Where(query);
if (ItemId != ID.Null)
{
int i = 0;
foreach (var x in contextQueryable)
{
if(x.ItemId.Equals(ItemId))
{
Position = i;
break;
}
i++;
}
}
IQueryable contextQueryable=context.GetQueryable().Where(查询);
if(ItemId!=ID.Null)
{
int i=0;
foreach(contextQueryable中的变量x)
{
如果(x.ItemId.Equals(ItemId))
{
位置=i;
打破
}
i++;
}
}
类似的方法应该可以:
var contextQueryable=context.GetQueryable().Where(query.GetResults();
var result=contextQueryable.Select((x,i)=>new{Item=x,Index=i})
.FirstOrDefault(itemWithIndex=>itemWithIndex.Item.Document.ItemId.Guid==ItemId);
如果(结果!=null)
索引=结果。索引;
编辑了答案:添加GetResults并更改等号。请注意,ItemId现在是Guid。这应该有效(经过测试)。