0
내 GUI에서 다음 코드를 사용하여 xml 파일을 업데이트하려고합니다. xml에 linq을 사용하여 xml 파일 업데이트
var Settings = (from e in config.Descendants("Settings")
from kvpair in e.Elements("add")
select new
{
Name = kvpair.Attribute("key").Value,
Node = kvpair
}).ToDictionary(x => x.Name, y => y);
Settings["CustomerA"].Node.Attribute.value=txtCustomerA.Text;
위의 코드
잘 작동합니다 :내가 키가 사전에 있는지 여부를 확인하고 싶어서 여부를 난이 너무 잘 작동
if(settings.containskey("CustomerA"))
Settings["CustomerA"].Node.Attribute.value=txtCustomerA.Text;
을 사용하고합니다.
하지만 난 내가 각 UDPATE
Settings["CustomerA"].Node.Attribute.value=settings.containskey("CustomerA") ?txtCustomerA.Text:null;
위해 if 문 피할 수 있지만, 위의 코드는 키가 사전에없는 존재 않는 예외를 throw하는 inorder를이 방식으로 시도하고 20 개 항목을 업데이트 할 말있다? ??
나는 20 문장을 피하기 위해 주위를 둘러보고 싶다. 나는 어떤 사람이 나를 인도 할 수 있다면 기쁠 것이다.
var mappings = new Dictionary<string, Func<string>>
{
{"CustomerA",() => txtCustomerA.Text},
{"CustomerB",() => txtCustomerB.Text},
{"CustomerC",() => txtCustomerC.Text},
// etc....
};
foreach(var pair in mappings)
{
Settings[pair.Key] = (Settings.ContainsKey(pair.Key)) ? pair.Value() : null;
}
그것은 여전히 정말 당신이 코딩을 많이 저장하지 않습니다하지만 20 + if
문을 피하지 :
귀하의 질문에 대한 복제에 모든 경우의 불규칙성이 있다고 가정하고 있습니까? – Aren
@Aren : 예. 오타가 있습니다. – Macnique