我将尝试查找所有具有共同组件的订单,以及共同组件的列表:
组件类:
结果显示了正确的信息,即订单1和订单2之间的共同组件是
如何使用订单列表使其更加普遍:
组件类:
public class Component
{
public Component(string name)
{
this.Name = name;
}
public string Name { get; private set; }
}
订单类:
internal class Order
{
public Order(string name,List<Component> components)
{
this.Name = name;
this.Components = components;
}
public string Name { get; private set; }
public List<Component>Components { get; private set; }
}
例如:
var component1 = new Component("B1");
var component2 = new Component("B2");
var component3 = new Component("B3");
var component4 = new Component("B4");
var order1 = new Order("M1", new List<Component> { component2 });
var order2 = new Order("M2", new List<Component> { component1, component2, component3, component4 });
var order3 = new Order("M3", new List<Component> { component1, component2 });
var dependents = from cmp1 in order1.Components
join cmp2 in order2.Components
on cmp1.Name equals cmp2.Name
select new
{
order1Name = order1.Name,
order2Name = order2.Name,
ComponentName = cmp1.Name
};
var result = dependents.ToList();
结果显示了正确的信息,即订单1和订单2之间的共同组件是
component2
(“B2”)。如何使用订单列表使其更加普遍:
var orders = new List<Order> { order1, order2, order3 };
我希望每2个订单都能得到一个共同组件的列表,而不是为每个可能的配对做一次。
我推测这应该是类似于:
var allDependents =
runs.ForEach(order=>order.Components)
....
from cmp1 in order1.Components
join cmp2 in order2.Components
on cmp1.Name equals cmp2.Name
select new
{
order1Name = order1.Name,
order2Name = order2.Name,
ComponentName = cmp1.Name
};
附加信息:
如下图所示,我们可以看到每2个订单对应一个组件列表