【发布时间】:2013-02-15 10:01:13
【问题描述】:
我有一个 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 服务器响应,每个响应中有大量数据。
【问题讨论】:
-
content["data"].Children()的类型是什么?如果“可选”不存在,索引器data["data"]["optional"]是否会抛出异常? -
The null check here is a performance issue.认真的吗?如果有,影响有多大?为什么?
标签: performance linq linq-to-entities