2016-10-04 14 views
1

こんにちは私はIQueryableから特定の要素の位置を見つけようとしています。私は要素の数が膨大であればプロセスが重くなるため、リストを検索して検索したいとは思わない。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++; 
} 
} 

答えて

1

何か作業をする必要があります:あまりにもこれに

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; 
+0

ガット・エラー。 :( – yk1007

+0

答えを編集しました:GetResultsを追加し、等号を変更してください.It Ildは現在Guidです。これは動作するはずです(テスト済みです)。 – Gatogordo

関連する問題