2010-02-28 2 views
2

linq 문 자체에서 낮은 선 (사전 작성 및 값을 추가하는 루프)을 캡처 할 수있는 방법이 있는지 궁금합니다. 지금 select new는 새로운 익명 형식을 반환하지만 미리 채워진 모든 값이있는 Dictionary를 반환 할 수있는 방법이 있는지 궁금합니다.linq으로 간결하게 만들 수 있습니까?

XDocument reader = XDocument.Load("sl.config"); 
    var configValues = from s in reader.Descendants("add") select new { Key = s.Attribute("key").Value, s.Attribute("value").Value }; 

    Dictionary<string, string> Settings = new Dictionary<string, string>(); 

    foreach (var s in configValues) 
    { 
     Settings.Add(s.Key, s.Value); 
    } 

답변

6

시도해보십시오. Enumerable.ToDictionary 확장 방법.

XDocument reader = XDocument.Load("sl.config"); 
var Settings = reader.Descendants("add") 
    .ToDictionary(s => s.Attribute("key").Value, s => s.Attribute("value").Value); 
+0

그것은 오히려'var에 configValues의 =의' – Gabe

+0

네보다는'사전 <문자열, 문자열> 설정 ='해야, 고정 변수 이름, 감사 ;-) –

+0

그 덕분에! – keithwarren7

2
var = XDocument.Load("sl.config").Descendants("add").ToDictionary 
    (x => x.Attribute("key"). Value, x => x.Attribute("value"). Value); 
+0

조금 형식화해도 괜찮겠습니까? :) –

관련 문제