내가 메모리 "테이블"그 힘이 같은 모양이 있습니다C#에서는 3-way 룩업 테이블을 만들 수있는 out-of-the-box 방법이 있습니까?
Favorite# Name Profession
--------- ---------- ------------------
3 Names.Adam Profession.Baker
9 Names.Bob Profession.Teacher
7 Names.Carl Profession.Coder
7 Names.Dave Profession.Miner
5 Names.Fred Profession.Teacher
그리고 제가하고 싶은를, 3 개 필드 중 하나를 사용하여, 신속하고 효율적인 검색을 할 수 있습니다. 즉 , 내가 원하는 : 모든
myTable[3]
및myTable[Names.Adam]
및myTable[Professions.Baker]
는myTable[Profession.Teacher]
{3,Names.Adam,Profession.Baker}
이{9,Names.Bob,Profession.Teacher}
및{5,Names.Fred,Profession.Teacher}
모두를 반환하는 반환합니다.
테이블은 런타임 중에 사용자의 작업에 따라 작성되며 데이터베이스 연결을 보장 할 수없는 섹션에서 사용되기 때문에 데이터베이스에 저장할 수 없습니다.
지금은 (즐겨 찾기 번호, 이름, 직업) 중 하나의 열을 사용하여 각각 3 개의 uber-Dictionaries와 2 개의 사전을 보유한 uber-Dictionaries의 각 값을 사용하여 "간단히"(hah!) 저장합니다. ("Name"uber-dictionary의 값은 Dictionary<FavoriteNumber,Profession[]>
이고 Dictionary<Profession, FavoriteNumber[]>
입니다.) 두 개의 사전에는 두 개의 조회가 필요하며 일반적으로 1 또는 2 요소).
누구든지이 작업을 수행하는 더 좋은 방법을 제안 할 수 있습니까? 테이블이 작기 때문에 메모리를 추가로 사용하지 않아도됩니다. 0 개 항목)하지만 난 그게 더 쉽게 유지 보수 코드를 만들기 위해 약간의 CPU를 희생 기꺼이 ...이
class Person {
public int FavoriteNumber;
public string Name;
public string Profession;
}
같은 클래스의 컬렉션을 만들 경우
해야하지 myTable에 의한 첫 번째 예 [3]? – plinth
20 행의 경우 선형 검색을 사용하십시오. 사전보다 빠릅니다. –
@plinth - 꽤 정확한 – scraimer