gpt4 book ai didi

c# - Enterprise Architect - 找到原型(prototype)所有元素的最快方法

转载 作者:行者123 更新时间:2023-11-30 22:04:09 26 4
gpt4 key购买 nike

我们使用 C# 中的方法来确定构造型的所有元素,但这非常慢:

    public List<EA.Element> findElementsByStereotype(string stereotype){
List<EA.Element> result = new List<EA.Element>();
String xmlQueryResult = repository.SQLQuery(
"select obj1.object_id " +
"from t_object obj1 " +
"where obj1.stereotype = '" + stereotype + "';");
XmlDocument xml = Tools.XMLUtil.convertStringToXMLDocument(xmlQueryResult);
XmlNodeList xnList = xml.SelectNodes("/EADATA/Dataset_0/Data/Row");
foreach (XmlNode xn in xnList){
result.Add(repository.GetElementByID(Convert.ToInt32(xn.InnerText)));
}
return result;
}

您知道性能更高的解决方案吗?

最佳答案

如果您想快速前进,XML 永远不是您的 friend 。幸运的是,EA API 提供了一种不同的方法来检索一组元素:Repository.GetElementSet() ,它返回一个 EA.CollectionEA.Element s 来自以逗号分隔的元素 ID 列表,或来自 SQL 查询。

public List<EA.Element> findElementsByStereotype(string stereotype) {
List<EA.Element> result = new List<EA.Element>();
foreach (EA.Element element in repository.GetElementSet("select Object_ID " +
"from t_object where Stereotype='" + stereotype + "'", 2)) {
result.Add(element);
}
return result;
}

请注意,我尚未验证这是否运行得更快。我假设它会,但有可能 GetElementSet()本质上与您在幕后所做的 XML 解析相同。但如果不出意外,它会更短。

关于c# - Enterprise Architect - 找到原型(prototype)所有元素的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25421189/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com