你應該真正考慮安德烈Snede漢森寫了什麼。看起來你在這裏需要的是遞歸的和類型。無論是
,你的LINQ查詢看起來類似的東西:
BenefitValue = from message in premiumResponseMessage.Reuslts.Take(1)
where message != null
from subItem1 in message.SubItems.Take(1)
where subItem1 != null
from profile1 in subItem1.Profiles.Take(1)
where profile1 != null
from subItem2 in profile1.SubItems.Take(1)
where subItem2 != null
... etc.. etc
正如你所看到的,這仍然是醜得要命。考慮使用遞歸函數,深檢索值X平成型材,我沒有測試的代碼
private BenefitValueType GetValueForProfile(SubItemType item, int level, int index)
{
if ((item == null) || (item.Profiles[0] == null))
{
return null;
}
else if (level == 0)
{
return item.Profiles[index] != null
? item.Profiles[index].Value[0]
: null;
}
else
{
return GetValueForProfile(item.Profiles[0].SubItems[0], level - 1, index);
}
}
通知,也沒有參數驗證...
爲什麼是線對如此重要的金額您?你不應該數線,而是關心可讀性。 –
是「動態」類型的premiumResponseMessage? – FLCL
是的,它是動態的。 – swathi