from a in b.Descendants("SomeNode")
select new MyClass
{
isfirst= false,
islast = false,
};
어떻게 요소의 위치를 얻을 수 있습니까? 나는 기본적으로 어느 것이 먼저이고 어떤 것이 마지막 요소인지 알고 싶다.
from a in b.Descendants("SomeNode")
select new MyClass
{
isfirst= false,
islast = false,
};
어떻게 요소의 위치를 얻을 수 있습니까? 나는 기본적으로 어느 것이 먼저이고 어떤 것이 마지막 요소인지 알고 싶다.
뭔가 같은 ...
var res = b.Select((l, i) =>
new MyClass { IsFirst = (i == 0), IsLast = (i == b.Count-1) });
은 ... 작동합니다.
설명 : 익명 클래스를 구체적 클래스로 변경했습니다. 이것은 IsFirst와 IsLast가 MyClass라는 클래스에 setter가있는 부울 속성이라고 가정합니다.
람다 구문을 사용해야합니다.
b.Descendants("SomeNode").Select((pArg, pId) => new { Position = pId});
LP의 솔루션은 작동하지만 당신은 또한 더 읽기, 단어 기반 LINQ-형식에서 표현할 수 : 이제
static class EnumerableExtensions {
public struct IndexedItem<T> {
public T Item;
public int Index;
}
public static IEnumerable<IndexedItem<T>> Enumerate<T>(this IEnumerable<T> Data) {
int i = 0;
foreach (var x in Data)
yield return new IndexedItem<T> { Index = i++, Item = x };
}
}
당신이 말할 수 있습니다 :
from a in b.Descendants("SomeNode").Enumerate()
select new MyClass {
isFirst = (a.Index == 0),
isLast = (...),
element = a.Item }
질문 죄송 물어하지만, 왜 알고 싶니? 우리가 문제 공간을 이해할 수 있다면 더 좋은 대답을 얻을 수있을 것입니다. – Lazarus
select 안에 객체를 만들어서 CSS 클래스를 적용 할 위치를 취하고 싶습니다. – Tanmoy