2010-08-17 2 views
1

.net (C#, asp.net)에서 LINQ to XML을 처음 사용합니다. 나는 람다 표현에 대해 더 알고 싶다. 다음 쿼리와 함께 Lambada 식을 사용하고 있습니다.람다 식을 사용하여 LINQ to XML 쿼리에 매개 변수를 전달하는 방법은 무엇입니까?

count = FieldRoot.Element("USER").Element("MM") 
      .Descendants("MMMS") 
      .Where(a => a.Attribute("ID").Value == MID) 
      .SelectMany(b => b.Descendants("ABC")).Count(); 

당신이 말해 주시겠습니까 방법 (위의 경우 & B에) 특별히 매개 변수의 경우에는 람다 식 사용할 수 있습니까? 람다 식에서 매개 변수의 기본 개념은 무엇입니까? & b 대신 쿼리 외부에 정의 된 변수의 이름을 사용할 수 있습니까? 위의 경우에서 어떤 원소 a &이 나타내는 것은? 외부에서 매개 변수를 전달할 수 있습니까? 외부 쿼리에서 매개 변수를 전달할 수 있다면 어떻게 수행 할 수 있습니까? 위의 쿼리 대신에 람다 식의 매개 변수 개념을 이해하기 위해 다른 예제를 주면 나에게 많은 도움이 될 것입니다.

답변

1

기본 개념은 XElement 값의 시퀀스에서 Where을 호출하는 것입니다. 따라서 람다식이 여러 번 실행되고 a의 값이 "현재"XElement로 실행됩니다. 그런 다음 람다 식은 해당 XElement가 결과에 포함되어야하는지 여부를 나타냅니다.

SelectMany 호출의 경우 이는 일련의 시퀀스를 효과적으로 평평하게합니다. XElement에서 모든 ABC 자손 요소의 시퀀스를 생성합니다.

이것은 입니다. 실제로 LINQ to Objects - LINQ to XML이 LINQ to Objects와 매우 잘 어울립니다.

+0

현재 XElement를 나타내는 & b 대신 다른 매개 변수 이름이나 변수 이름 (쿼리 외부에서 선언 된 코드)을 사용할 수 있습니까? –

+0

@Shailesh : 예, 다른 변수를 사용할 수 있습니다. 변수는 람다 식으로 캡처됩니다. –

관련 문제