나는 당신을 위해 무엇을 찾고있는 것이라고 생각합니다. 나는 쓰기 것 :
ReadItems()
List<DataObject> dataObject = source.ReadItems()
.TakeWhile(x => x.Category == "Category")
.ToList();
은 읽고 한 번에 하나 개의 항목을 산출 IEnumerable<DataObject>
를 반환하는 방법이었다. iterator 블록 (yield return
등)을 사용하여 구현할 수도 있습니다.
다른 범주의 첫 번째 개체를 찾으면 곧바로 읽고 싶다고 가정합니다. 실제로 을 모두 포함하려는 경우 위의 LINQ 쿼리에서 DataObject
, TakeWhile
에서 Where
으로 일치하는 모든이 포함됩니다.
(편집 : Saeed는 이후로 답변에 대한 이의 제기를 삭제했지만, 예를 들어 떠날 수도 있습니다.)
편집 :
using System;
using System.Collections.Generic;
public class DataObject
{
public string Category { get; set; }
public int Id { get; set; }
}
class Test
{
static int count = 0;
static DataObject ReadNextFile()
{
count++;
return new DataObject
{
Category = count <= 5 ? "yes" : "no",
Id = count
};
}
static void Main()
{
List<DataObject> dataObjects = new List<DataObject>();
DataObject nextObject;
while((nextObject = ReadNextFile()).Category == "yes")
{
dataObjects.Add(nextObject);
}
foreach (DataObject x in dataObjects)
{
Console.WriteLine("{0}: {1}", x.Id, x.Category);
}
}
}
출력 : 다음에 즉
1: yes
2: yes
3: yes
4: yes
5: yes
, 목록이 그대로 남아 있습니다 참조 사이드가 날 믿어하지 않는 것 같은이, 작동합니다 증명 ReadNextFile
에서 반환 된 5 개의 별개의 개체.
확실합니까, 물어보고 싶은가요? – TalentTuner
나는 당신이 원하는 것을 정확히 알아 내려고 노력하는 데 어려움을 겪고 있습니다. – poindexter12
죄송합니다. 제 질문은 매우 모호합니다. 그냥 잠시 동안 객체에 액세스하는 방법입니다 (ReadNextElement()). p –