3 回答

TA贡献1155条经验 获得超0个赞
如其他答案中所述,您可以直接访问它。既然你在维持一段关系,我假设你想通过这段关系来做到这一点
var test = new List<String>();
foreach (Item2 my_item2 in parent.items2)
{
foreach (var item in parent.Item1_to_Item2_Relationships)
{
//implement your own equality comparision if it should be differernt
if (item.item2.id_alt == my_item2.id)
{
test.Add(item.item1.item1_code);
}
}
}
几个重要的点:
您正在处理列表和嵌套循环,该方法的性能不是最好的。
为了提高性能,应明智地选择关系数据结构,是否可以将其转换为
Dictionary
,从而提供更快的查找时间。由于您没有在关系中添加代码,因此代码当前将添加空白字符串,但是您始终可以使用 id 搜索对象,这意味着在列表中进行另一个搜索,这就是我说您可能想要更改的原因底层数据结构。
如果它们的项目代码是主键,那么将单个对象也存储在字典中可能会更好。

TA贡献2011条经验 获得超2个赞
最快和最简单的方法是传入parent需要itemX从itemY.
例如:
class Item1
{
public string id;
public string id_alt;
public string item1_code;
public Item1()
{
id = "";
item1_code = "";
}
}
class Item2
{
public string id;
public string id_alt;
public Item2()
{
id = "";
}
public void AccessItem1Prop(Parent parent) {
string item1ID = parent.items1[0].id;
}
}
您也可以传入parent单个项目的构造函数并将其作为对象属性附加到项目,但如果您可以简单地保持事情清洁,我会避免这种方法。

TA贡献1798条经验 获得超3个赞
我不喜欢代码的结构......但这是简单的答案。
您正在将两种不同的项目类型添加到两个不同的集合中。
您正在制作一个关系项目,它根据 id 将两者联系起来。
尽管您的代码尖叫有助于这个想法是合乎逻辑的并且是关联项目(例如使用数据库)的好方法。
我们可以用 Linq 简单地做到这一点,但我宁愿更接近你是如何写这个问题的。
首先像你正在做的那样迭代你的项目,然后迭代你的关系。然后根据 Id 比较迭代其他项目,并根据最终的 Id 比较得到答案。
foreach (Item2 my_item2 in parent.items2)
{
foreach (Item1_to_Item2_Relationship relatedItem in parent.Item1_to_Item2_Relationships)
{
if (my_item2.id == relatedItem.item2.id_alt)
{
foreach (Item1 item1 in parent.items1)
{
if (relatedItem.item1.id_alt == item1.id)
{
Console.WriteLine(item1.item1_code);
}
}
}
}
}
//Outputs
//CODE_01
//CODE_02
- 3 回答
- 0 关注
- 135 浏览
添加回答
举报