我有一个 IEnumerable 集合。使用 LINQ,我从 Web 服务响应中填充集合。下面是我正在使用的示例。
lookupData = from data in content["data"].Children()
select new LookupData
{
LookupKey = (data["data"]["key"]).ToString(),
LookupValue = (string)data["data"]["name"]
};
我将对许多类似的响应使用相同的代码,这些响应将返回一个键和值。
现在,当我需要服务响应中的一个附加字段来处理少数响应(不是全部)时,我得到了一个场景。所以,我在“LookUpData”类中创建了一个“Optional”属性,如下所示:
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 服务器响应,每个响应中有很多数据。