Linq查询太慢了

时间:2014-04-22 22:47:32

标签: c# linq

我在C#中设置了以下linq查询。 CompDotPinNamePinDict字典的类型为<string, object>,对象具有名为UniqueNetNames的List<string>

我正在PCB上构建一组设备引脚,我们称之为网络。网络本质上是将器件引脚连接在一起的导线。

平均pin字典将包含大约80k条目。 平均UniqueNetName列表将包含大约4个条目。

以下是围绕linq查询的代码:

var uniqueName = dr[0].ToString().ToUpper().Trim();

//Get all of the pins with the associated net names

// BUG - Following .Contains() is 37% of import processing time. Needs optimized.
var values = DataStore.OriginalSolution.CompDotPinNamePinDic.Where(x => uniqueName == x.Key ||
                x.Value.UniqueNetNames.Contains(uniqueName, StringComparer.InvariantCultureIgnoreCase));

foreach (var pin in values)
{
    newNet.AddPin(pin.Value);
}

//If no pins were found, alert the user
if(!newNet.PinListDic.Any())
{
    errors.Add("SRTool:Missing pins in " + newNet.UniqueNetName + "(FFI Net Name). Net not created.");
    continue;
}

之后,我会获取values引脚列表并继续创建net。在我的所有导入功能中,49.7%的处理器时间用于上述linq查询。

有人能想到从这本字典中提取一组引脚的更好方法吗?

0 个答案:

没有答案