CSV파일을 윈폰에서 읽을때 첫줄을 Skip 하고 싶을때 사용한다.
csv 첫줄에는 대부분 데이터들의 컬럼값 즉 메뉴 이름같은것이 들어가기때문에
첫줄을 제외한 나머지 데이터를 뽑을때 유용한다. 혹은 마지막데이터를 끊거나
풀 소스
/// <summary>
/// csv 파일을 읽을때 처음 한줄을 Skip 할때 사용
/// foreach문등에서 처음 인덱스와 끝의 인덱스를 감지 한다.
/// </summary>
public static class SkipData
{
public class SkipFirst<T> : IEnumerable<T>
{
private IEnumerable<T> mEnum;
public SkipFirst(IEnumerable<T> enm)
{
mEnum = enm;
}
#region IEnumerable<T> Members
public IEnumerator<T> GetEnumerator()
{
IEnumerator<T> iter = mEnum.GetEnumerator();
if (iter.MoveNext())
{
while (iter.MoveNext())
{
yield return iter.Current;
}
}
}
#endregion IEnumerable<T> Members
#region IEnumerable Members
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
#endregion IEnumerable Members
}
public class SkipLast<T> : IEnumerable<T>
{
private IEnumerable<T> mEnum;
public SkipLast(IEnumerable<T> enm)
{
mEnum = enm;
}
#region IEnumerable<T> Members
public IEnumerator<T> GetEnumerator()
{
IEnumerator<T> iter = mEnum.GetEnumerator();
if (iter.MoveNext())
{
T curr = iter.Current;
while (iter.MoveNext())
{
yield return curr;
curr = iter.Current;
}
}
}
#endregion IEnumerable<T> Members
#region IEnumerable Members
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
#endregion IEnumerable Members
}
static public SkipFirst<T> First<T>(IEnumerable<T> enm)
{
return new SkipFirst<T>(enm);
}
static public SkipLast<T> Last<T>(IEnumerable<T> enm)
{
return new SkipLast<T>(enm);
}
}
참고 : http://honestillusion.com/blogs/blog_0/archive/2007/02/05/c-code-adding-skip-first-to-foreach.aspx
참고로 사용은 이렇게 한다.
foreach (var item in SkipData.First(StationsSplitData))