2017-11-16 1 views
0

그래서 여기에 약간 흥미로운 문제가 있습니다. 내가 달성하고자하는 것은 목록에 문자열 변수를 에서 사이에 추가 한 다음 나중에 다른 문자열과 비교하는 것입니다. 지금까지 코드 아래 사용하여이를 달성 할 수C# 값이있는 문자열 변수를 모든 System.Collections 클래스에 추가하고 검색하는 방법

var list = new List<string>(); 
var item_1 = "USA"; 
var item_2 = "Canada"; 
var item_3 = "Cuba"; 
................... 
var item_N = "Country_N"; 
list.Add(item_1); 
list.Add(item_2); 
list.Add(item_3); 
................. 
list.Add(item_N); 

그리고 다른 캐릭터와 비교는 (FluentAssertions 클래스를 사용) 등의 아래에 보이는 : 여기 볼 수 있습니다

list[0].Should().Match(stringToCompare_1); 
list[1].Should().Match(stringToCompare_2); 
list[2].Should().Match(stringToCompare_3); 

가장 큰 문제는 그것이 일종의 어떤 문자열이 목록의 특정 색인에 추가되었는지 기억하기가 어렵습니다 (코드 사이의 멈출 수없는 스크롤은 지루합니다). 내 질문 :이 상황을 처리하는 더 우아한 방법이 있습니까? 아래처럼 보일 수 있습니다 뭔가 (List 클래스의 방법 ValueOf은 허구) :

var list = new List<string>(); 
var item_1_USA = "USA"; 
var item_2_Canada = "Canada"; 
var item_3_Cuba = "Cuba"; 
list.ValueOf(item_1_USA).Should().Match(stringToCompare_1); 
list.ValueOf(item_1_Canada).Should().Match(stringToCompare_2); 
list.ValueOf(item_1_Cuba).Should().Match(stringToCompare_3); 

내가 달성하기 위해 노력하고있어 명확히하기 위해 질문을 편집 (@Postlagerkarte 포함) 제안으로 많은. 웹 응용 프로그램을 테스트 중이며이 응용 프로그램의 모든 단계 (엔진 예약)를 진행하면서 사용자의 이름, 성, 전자 메일 주소, 전화 번호 등 다양한 정보를 캡처하고 저장해야합니다. 캡처 된 정보의 양이 때로는 2000 개를 초과 할 수 있습니다. 현재 데이터 구조 리스트을 사용하고 있습니다. 나중에, 신청서의 마지막 단계에서 저의 저장된 값과이 마지막 페이지의 현재 값을 비교해야합니다. 예를 들어, 예약 엔진의 2 단계에서 캡처 한 사용자의 이름이 최종 단계의 값과 일치해야합니다. 목록포함 메서드는 잘못된 정보의 유효성을 검사 할 수 있으므로 여기에 적합하지 않습니다. list[0]....list[N]을 사용하여 값에 액세스하는 것은 매우 불편합니다. 그 색인에 정확히 무엇이 저장되었는지 잊을 수 있습니다. 지금 코드를 스크롤하여 돌아와서 해결하고 있습니다. 모든 현명한 탐색이 인정됩니다.

+0

색인이 항상 일치합니까? (item_1은 stringToCompare_1과 비교되어야 함). 개별 변수를 비교하는 경우 왜 목록이 필요합니까? 잠재적으로 수천 개의 개별 변수가있을 때 왜 더 "우아한"솔루션을 찾고 있습니까? – maccettura

+0

인덱스가 항상 일치하지 않는 문제가 있습니다 ... – GordonFreaman

+0

질문을 명확히하는 것이 좋습니다. 필요한 것을 이해하는 데 어려움을 겪고 있습니다. – maccettura

답변

1

당신은 이것에 대한 Dictionary<string, string>을 사용할 수 있습니다 말하는 Contains() 방법을 사용할 수 없습니다. 각 값의 키는 필드 또는 정보 식별자 (userFirstName, userAge 등)입니다. 데이터를 처리 할 때 읽고있는 값으로 사전에 추가합니다.

유효성을 검사 할 때 필드 식별자를 사용하여 저장된 값을 조회하고 마지막 페이지에 표시되는 데이터와 비교하십시오.

마법 문자열 리터럴을 피하고 확인해야하는 상수를 사용하지 않아도 문자열 대신 열거를 키로 사용할 수도 있습니다.

+0

그게 내가 필요한 것입니다. var items = new Dictionary ()을 사용할 수 있습니다. items.Add ("이름", "사용자의 이름이 여기에 있습니다"). 그리고 내가 할 Console.WriteLine (items [ "FirstName"]); 이 키의 값을 정확히 인쇄합니다. 오른쪽 탐색에 감사드립니다. – GordonFreaman

0

list.Contains(stringToCompare_1); 
+0

답변 해 주셔서 감사합니다. 내 실제 요구 사항은 그 목록에 가치가있는 것이 아니라 페이지의 모든 항목에 대해 유효성을 검사하는 것입니다. – GordonFreaman