C#
Dictionary<string,List<string>> 타입 첫 번째 Value만 추출하기
littlemk
2020. 3. 17. 10:35
{
"EmailList": {
"www.fnffn.com": [
"b69aa3080a29384e63f6b67002031560-15705007@contact.gandi.net",
"admin@www.fnffn.com",
"administrator@www.fnffn.com",
"hostmaster@www.fnffn.com",
"postmaster@www.fnffn.com",
"webmaster@www.fnffn.com",
"admin@fnffn.com",
"administrator@fnffn.com",
"hostmaster@fnffn.com",
"postmaster@fnffn.com",
"webmaster@fnffn.com"
],
"test.fnffn.com": [
"b69aa3080a29384e63f6b67002031560-15705007@contact.gandi.net",
"admin@test.fnffn.com",
"administrator@test.fnffn.com",
"hostmaster@test.fnffn.com",
"postmaster@test.fnffn.com",
"webmaster@test.fnffn.com",
"admin@fnffn.com",
"administrator@fnffn.com",
"hostmaster@fnffn.com",
"postmaster@fnffn.com",
"webmaster@fnffn.com"
],
"re.fnffn.com": [
"b69aa3080a29384e63f6b67002031560-15705007@contact.gandi.net",
"admin@re.fnffn.com",
"administrator@re.fnffn.com",
"hostmaster@re.fnffn.com",
"postmaster@re.fnffn.com",
"webmaster@re.fnffn.com",
"admin@fnffn.com",
"administrator@fnffn.com",
"hostmaster@fnffn.com",
"postmaster@fnffn.com",
"webmaster@fnffn.com"
]
}
}
위의 처럼 Dictionary<string,List<string>>의 json 타입이 있다고하면..
내 경우엔 각각의 도메인마다 맨 첫 메일주소를 가져와야만 했다.
ㅠㅠ c#엔 아직 문법이 많이 약해서.. 이리저리 묻고 찾아봐서 결국엔 알아냈다.
1번째 방법이다.
var EmailListFirst = approvereListResponse.EmailList.SelectMany(s => s.Value.Take(1));
위의 결과로도 나타낼 수 있는데... 문제는 이렇게 하게될 경우 SelectMany 메소드가 char 배열로 떨어트린다는 단점이 있다.
(approvereListResponse.EmailList : 위 json 타입을 Linq 형식으로 만듦)
때문에 내 경우엔 위 EmailListFirst라는 변수를 또 다른 List 변수에 copy해야 하는데.. 위의 경우로 넣게되면 개체오류가 뜰 것이다.
이때는 다음과 같이 사용하면된다.
var EmailListFirst = approvereListResponse.EmailList.Select(s => s.Value[0]).ToList();
위 코드로 사용하게되면 List형식으로 만들어 다른 List 타입에 copy할 때 매우 쉬워진다!
내 경우엔 EmailListFirst라는 변수를 Session에 담고있어야 했는데, List에 카피할경우
List<string> Email = (List<string>)Session["세션명"]
으로 담아주면 끝!!! ㅎ