Where
方法のみリターン:あなたは、その後、Bのすべてのインデックスを、必要な場合。この関数は、それ以上の情報を賢明な方法で提供することはできません(はローカル変数を取得してそれを処理しますが、恐ろしいことです)。
最終結果にインデックスを追加する場合は、そのインデックスを含むプロジェクションを作成する必要があります。 オリジナルのインデックスが最終結果に表示されるようにするには、Where
句の前にそのプロジェクションを配置する必要があります。ここで
はその例です:
using System;
using System.Collections.Generic;
using System.Linq;
public class Test
{
static void Main()
{
IEnumerable<char> letters = "aBCdEFghIJklMNopQRsTUvWyXZ";
var query = letters.Select((c, i) =>
new { Char=c, OriginalIndex=i })
.Where(x => char.IsLower(x.Char))
.Select((x, i) =>
new { x.Char,
x.OriginalIndex,
FinalIndex=i});
foreach (var result in query)
{
Console.WriteLine(result);
}
}
}
結果:
{ Char = a, OriginalIndex = 0, FinalIndex = 0 }
{ Char = d, OriginalIndex = 3, FinalIndex = 1 }
{ Char = g, OriginalIndex = 6, FinalIndex = 2 }
{ Char = h, OriginalIndex = 7, FinalIndex = 3 }
{ Char = k, OriginalIndex = 10, FinalIndex = 4 }
{ Char = l, OriginalIndex = 11, FinalIndex = 5 }
{ Char = o, OriginalIndex = 14, FinalIndex = 6 }
{ Char = p, OriginalIndex = 15, FinalIndex = 7 }
{ Char = s, OriginalIndex = 18, FinalIndex = 8 }
{ Char = v, OriginalIndex = 21, FinalIndex = 9 }
{ Char = y, OriginalIndex = 23, FinalIndex = 10 }
ありがとうございました。私はWhereメソッドで何かを逃していないことを確認していました。私はもう少し読む必要があります。 –