본문 바로가기
C# /WindowsForm

List<T> 부분에 조건 요소 검색 및 존재 여부 확인

by Hwoarang757 2013. 8. 2.

.Net Framework 3.5 이상이라면 Linq를 이용해서 쉽게 검색이 가능 하지만

 

SmartClient 모듈의 Framework 버젼이 2.0이라 사용을 못했다 .

 

검색을 하면서 찾은 방법입니다~!!

 

1. 저장 클래스 선언

public class ServiceIDRepository

    {

        public int ServiceID { get; set; }

        public string AgentID { get; set; }

        public int ManualCount { get; set; }

        public int PdsCallCount { get; set; }

        public int WrapSeconds { get; set; }

    }

 

// List객체 생성

List<ServiceIDRepository> serviceIDRepository = new List<ServiceIDRepository>();

 

2.  데이터 저장

 

                    serviceIDRepository.Add(new ServiceIDRepository() { ServiceID = 1 , AgentID = "id1" , ManualCount = 1 , PdsCallCount = 1, WrapSeconds = 1 });

                    serviceIDRepository.Add(new ServiceIDRepository() { ServiceID = 2, AgentID = "id2", ManualCount = 2, PdsCallCount = 2, WrapSeconds = 2 });

                    serviceIDRepository.Add(new ServiceIDRepository() { ServiceID = 3, AgentID = "id3", ManualCount = 3, PdsCallCount = 3, WrapSeconds = 3 });

                    serviceIDRepository.Add(new ServiceIDRepository() { ServiceID = 4, AgentID = "id4", ManualCount = 4, PdsCallCount = 4, WrapSeconds = 4 });

                    serviceIDRepository.Add(new ServiceIDRepository() { ServiceID = 5, AgentID = "id5", ManualCount = 5, PdsCallCount = 5, WrapSeconds = 5 });

                    serviceIDRepository.Add(new ServiceIDRepository() { ServiceID = 6, AgentID = "id6", ManualCount = 6, PdsCallCount = 6, WrapSeconds = 6 });

                    serviceIDRepository.Add(new ServiceIDRepository() { ServiceID = 7, AgentID = "id7", ManualCount = 7, PdsCallCount = 7, WrapSeconds = 7 });

                    serviceIDRepository.Add(new ServiceIDRepository() { ServiceID = 8, AgentID = "id8", ManualCount = 8, PdsCallCount = 8, WrapSeconds = 8 });

 

 

 

3. 검색

 

(1) 조건에 맞는 값의 인덱스 검색

 

int index = serviceIDRepository.FindIndex

(delegate(ServiceIDRepository sr) { return sr.ServiceID == 1 && sr.AgentID == 1; })

 

 

(2) 값의 존재 유무 검색

bool exists = serviceIDRepository.Exists

(delegate(ServiceIDRepository sr) { return sr.ServiceID == 1 && sr.AgentID == 1; })

 

(3) 조건에 맞는 값 열거

int manualCallSummery = 0;

                int pdsCallsummery = 0;

                int wrapSecondsSummery = 0;

               

 

serviceIDRepository.ForEach(delegate(ServiceIDRepository sr)

                    {

                        if (sr.AgentID == agentData.UserId)

                        {

                            manualCallSummery += sr.ManualCount;

                            pdsCallsummery += sr.PdsCallCount;

                            wrapSecondsSummery += sr.WrapSeconds;

                        }

                    });