【发布时间】:2010-02-28 13:36:53
【问题描述】:
我有收藏List<Car>。
如何将此集合中的每个项目与其他项目进行比较而不重复。
例如:
- 迭代:
这辆车是奥迪,第二辆车是宝马
bool IsSimilar(Car secondCar)
{
if(this.Name==secondCar.Name) return true;
return false;
}
这是不允许的:
n 次迭代
这辆车是宝马,第二辆车是奥迪
bool IsSimilar(Car secondCar)
{
if(this.Name==secondCar.Name) return true;
return false;
}
更清晰:
List<Car> car=new List<Car>();
List<Pair> pairs=new List<Pair>();
pairs.Cars=new List<Car>();
foreach(Car car in cars)
{
foreach(Car secondCar in cars)
{
if(secondCar!=car)
{
if(car.Name==secondCar.name && car.Owner==secondCar.Owner)
{
Pair pair=new Pair();
pair.Cars.Add(car);
pair.Cars.Add(secondCar);
pairs.Add(pair);
}
}
}
}
我只是不想比较汽车两次(你知道第一次迭代比较汽车 1 和汽车 2,下一个汽车 2 是基础汽车,汽车 1 是第二汽车)
对不起我糟糕的英语
【问题讨论】:
-
不确定你想要什么。您能否通过比较来解释您的意思(检查是否相等,对其进行排序,...)。输出应该是什么样的,您期望比较的输出是什么。
-
不清楚您要做什么。您是否正在尝试创建一个没有重复的排序列表? - 如果是,您是否尝试过使用 LINQ?
-
我想搜索具有相同属性的项目。如果我有 100 个项目,我想使用这样的方法: foreach(Car car in cars) { foreach(Car secondCar in cars) { if(secondCar!=car) { car1.IsSimilar(car2); } } } 但是没有重复,所以如果我在我不想再做一次之前比较汽车 1 和汽车 2。方法 IsSimilar 不会返回 bool,而是执行以下操作: List
pairs=new List(Pair) -
也许将其命名为组合并不是一个好主意...它引入了混乱...
-
还有——如果 Car1 与 Car3 相似,那么是否一定意味着 Car3 与 Car1 相似?
标签: c# algorithm combinations