0
我有一個IEnumerable集合。 使用LINQ,我從Web服務響應填充集合。 下面是我使用的示例。在選擇使用可空屬性時的LINQ性能
lookupData = from data in content["data"].Children()
select new LookupData
{
LookupKey = (data["data"]["key"]).ToString(),
LookupValue = (string)data["data"]["name"]
};
我將使用相同的代碼進行很多類似的響應,它將返回一個鍵和值。
現在,我得到了一個場景,當我需要從服務響應中爲少數響應(不是所有)提供額外的字段時。所以,我在「LookUpData」類創建的「可選」的屬性和使用如下:
lookupData = from data in content["data"].Children()
select new LookupData
{
LookupKey = (data["data"]["key"]).ToString(),
LookupValue = (string)data["data"]["name"],
Optional = referenceConfig.Optional != null
? (data["data"]["optional"]).ToString()
: String.Empty
};
這裏的空檢查是一個性能問題。我不想使用下面的內容,因爲我有其他條件,所有它們將會成爲一個非常大的if else循環。
if(referenceConfig.Optional != null){
lookupData = from data in content["data"].Children()
select new LookupData
{
LookupKey = (data["data"]["key"]).ToString(),
LookupValue = (string)data["data"]["name"],
Optional = (data["data"]["optional"]).ToString()
};
}
else{
lookupData = from data in content["data"].Children()
select new LookupData
{
LookupKey = (data["data"]["key"]).ToString(),
LookupValue = (string)data["data"]["name"]
};
}
但我至少有10個Web服務器響應,每個響應中都有大量數據。
'content [「data」]的類型是什麼?Children()'?如果「可選」不存在,那麼索引器data [「data」] [「optional」]是否會引發異常? – 2013-02-15 12:35:38
'這裏的空檢查是一個性能問題。「真的嗎?如果是這樣,影響有多大,爲什麼? – sgmoore 2013-02-15 14:53:18