2011-02-25 6 views
0

데이터 집합에서 일부 연산을 수행하는 클래스가 있습니다. 처리 할 데이터 집합은 SQL 쿼리에서 파생되며 일반적으로 행에 5 ~ 10 개의 필드가있는 몇 개의 행으로 구성됩니다. 예를 들어 ..데이터 세트를 클래스 또는 메소드로 전달 하시겠습니까?

"Bob", "Smith", "57", "555-555-5555", "Nursing" 
"Pam", "Watson", "32", "555-555-3494", "Pre-Law" 
"Sam", "Johnson", "42", "555-555-9382", "History" 
"Paul", "Jenkins", "40", "555-555-3720", "Geography" 

이 데이터를 클래스로 전달하는 가장 좋은 방법은 무엇입니까? 아니면 그 방법에 대해서는 어때?

가능한 한 클래스를 일반 클래스로 만들고 싶습니다. 따라서 데이터를 가져 오는 데 필요한 데이터 액세스를 클래스가 수행하는 대신 클래스에 데이터를 전달하고 싶습니다. 클래스 내에서 일부 작업을 수행하기 위해 데이터를 반복 할 수 있어야합니다.

처음에는 사전 개체 나 다차원 배열을 전달할 생각이었습니다. .NET에서 응용 프로그램을 빌드하려고합니다. 무리 감사.

+1

왜 -1일까요? 나는이 질문이 일반적인 것임을 알고 있지만, 그렇게해서 수색했으며 비슷한 것을 찾을 수 없다. – webworm

+1

질문은 약간 넓고 열려 있지만, 나는 그것이 downvote를받을 자격이 있는지 모르겠습니다. –

답변

1

먼저 데이터의 각 행을 나타내는 클래스를 만들어야합니다. 이 경우 Student이 잘 맞는 것 같습니다 :

class Student 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int Age { get; set; } 
    public string Telephone { get; set; } 
    public string Major { get; set; } 
} 

작성해야하며, 데이터의 각 행에 대해 하나 개 Student 클래스를 초기화합니다. 그런 다음 컬렉션 클래스에 추가 할 수 있습니다. 난 당신이 데이터베이스에 액세스하는 방법을 모르겠어요 때문에 정확한 세부 사항으로 사라하지 않은

ISet<Student> students = new HashSet<Student>(); 
for each row in query result // (pseudocode) 
{ 
    students.Add(new Student { FirstName = queryResult[0], 
         LastName = queryResult[1] }); // other fields omitted 
} 

하십시오 HashSet<Student> 적절한 선택이 될 수 있습니다.

+0

감사합니다 저스틴! 그게 내가 찾고있는 것 같아. 주제가 아닐 수도 있지만 'ISet'은 무엇을 의미합니까? – webworm

+1

'I'는 * [인터페이스] (http://msdn.microsoft.com/en-us/library/87d83y5b%28v=VS.100%29.aspx) * 및 * [설정] (http://en.wikipedia.org/wiki/Set_%28computer_science%29)*는 고유 한 요소 모음입니다. 'students '타입을'HashSet '으로 만들 수는 있지만'ISet'을 사용하면 원하는대로 구현을 변경하는 것이 더 쉽습니다. 패턴에 대한 자세한 내용은 [이 질문] (http://stackoverflow.com/questions/400135/c-listt-or-ilistt)을 참조하십시오. – Justin

관련 문제