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 }
감사합니다. Jon, 일을 정리했습니다. 나는 Where 메서드로 무언가를 놓치지 않았는지, 아니면 let 또는 into와 함께 할 다른 무언가를 놓치지 않았는지 확인했다. 좀 더 읽을 필요가있어. –