嗨,我正试图从IQueryable找到特定元素的位置。我不想转换成列表然后搜索它,因为如果元素的数量很大,这个过程很繁重。
我尝试了。takewhile (x => x.ItemId. equals (ItemId)),但它显示我功能不支持。下面是我现在如何使用循环查询。有更好的方法吗?
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++;
}
}
应该这样做:
var contextQueryable = context.GetQueryable<CustomSearchResultItem>().Where(query).GetResults();
var result = contextQueryable.Select((x, i) => new { Item = x, Index = i })
.FirstOrDefault(itemWithIndex => itemWithIndex.Item.Document.ItemId.Guid == ItemId);
if (result != null)
index = result.Index;