사전에서 첫 번째 요소 가져오기
저는 다음과 같은 선언을 합니다.
Dictionary<string, Dictionary<string, string>> like = new Dictionary<string, Dictionary<string, string>>();
첫 번째 요소를 꺼내야 하는데 키나 값을 모릅니다.이것을 하는 가장 좋은 방법은 무엇입니까?
참고로 전화하기First
여기서 실제로 IEnumberable의 Linq 확장을 호출하는데, 이는 다음에 의해 구현됩니다.Dictionary<TKey,TValue>
하지만 사전에서 "first"는 정의된 의미를 가지고 있지 않습니다.이 답변에 따르면 마지막으로 추가된 항목은 "첫 번째" 항목(즉, 스택처럼 동작함)으로 끝나지만, 이는 구현에 특정적이며 보장된 동작이 아닙니다.즉, First를 호출하여 정의된 항목을 얻을 것이라고 가정하는 것은 문제를 제기하는 것입니다. 이 항목을 사용하는 것은 아래의 Bobson이 언급한 것처럼 사전에서 임의 항목을 얻는 것과 유사하게 취급되어야 합니다.그러나 때때로 사전의 항목이 필요하기 때문에 유용합니다.
그냥 린크를 사용하세요.First()
:
var first = like.First();
string key = first.Key;
Dictionary<string,string> val = first.Value;
참고: 사용First
사전을 보면 알 수 있습니다.KeyValuePair
이 경우에는KeyValuePair<string, Dictionary<string,string>>
.
또한 다음을 사용하여 구체적인 의미를 얻을 수 있습니다.First
그것을 린크와 결합함으로써.OrderBy
:
var first = like.OrderBy(kvp => kvp.Key).First();
사전에서 요소를 얻는 링크 없는 방법을 원하는 사람을 위해.
var d = new Dictionary<string, string>();
d.Add("a", "b");
var e = d.GetEnumerator();
e.MoveNext();
var anElement = e.Current;
// anElement/e.Current is a KeyValuePair<string,string>
// where Key = "a", Value = "b"
이것이 구체적인 구현인지는 모르겠지만 사전에 요소가 없다면,Current
다음을 포함합니다.KeyValuePair<string, string>
키와 값이 모두 있는 곳.null
.
(린크의 논리를 살펴봤습니다.First
이것을 생각해내는 방법, 그리고 그것을 테스트했습니다.LinqPad 4
)
사용할 수는 있지만,First()
사전에는 순서 자체가 없습니다.대신 OrderedDictionary를 사용하십시오.그러면 당신은 할 수 있습니다.FirstOrDefault
이런 식으로 하면 의미가 있을 것입니다.
편집: 정렬된 사전을 사용합니다.
사용하는 것이 좋습니다.FirstOrDefault()
첫 번째 값을 검색합니다.
예:
var firstElement = like.FirstOrDefault();
string firstElementKey = firstElement.Key;
Dictinary<string,string> firstElementValue = firstElement.Value;
사전에서 항목의 순서를 정의하지 않습니다.아이템이 필요한 경우Keys
또는Values
사전 속성을 선택할 수 있습니다.
using System.Linq;
Dictionary<string, Dictionary<string, string>> like = new Dictionary<string, Dictionary<string, string>>();
Dictionary<string, string> first = like.Values.First();
나는 사전에서 첫 번째 요소를 찾는 쉬운 방법을 찾습니다 :)
Dictionary<string, Dictionary<string, string>> like =
newDictionary<string,Dictionary<string, string>>();
foreach(KeyValuePair<string, Dictionary<string, string>> _element in like)
{
Console.WriteLine(_element.Key); // or do something
break;
}
배열로 변환
var array = like.ToArray();
var first = array[0];
성능 측면에서 컬렉션을 인덱싱하는 쉬운 방법, 높은 호환성(2.0, 3.0, 3.5, 4.0, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7.1, 4.7.2, 4.8) 및 구현이 쉽습니다.
오늘 저장!!이것은 아이템 복사본일 뿐만 아니라 컬렉션의 아이템 참조입니다!!사세요!!
string [] arrayString = new string[like.Count];
like.Values.CopyTo( arrayString,0 );
arrayString[0] //First
참조:
언급URL : https://stackoverflow.com/questions/13979966/get-first-element-from-a-dictionary
'programing' 카테고리의 다른 글
날짜를 YYYYMM 형식으로 변환 (0) | 2023.07.15 |
---|---|
로컬 SQL Server 데이터베이스 생성 (0) | 2023.07.15 |
스크롤할 때 배경 목록 보기가 검은색이 됨 (0) | 2023.07.15 |
excel vba의 공개 정적 변수 (0) | 2023.07.15 |
효소로 반응 성분을 테스트하는 중입니다.유형 스크립트에서 인스턴스 메서드를 찾을 수 없습니다. (0) | 2023.07.15 |