2012-11-15 36 views
-2

可能重复:
Optimizing Double foreach loop优化foreach循环比较多的东西

我试图把一个双foreach循环到一个单一的foreach循环

foreach (KeyValuePair<Int64, MyObject> kvp in originCounts) 
{ 
    foreach (KeyValuePair<Int64, MyObject> testkvp in originCounts) 
    { 
    //Run Comparison on testkvp ad kvp to see if all elements of object are the same 
    } 
} 

而且MyObject被定义为

public class MyObject 
{ 
    public string FirstName{ get; set; } 
    public string LastName{ get; set; } 
    public int UserID { get; set; } 
    public string Address { get; set; } 
} 

无论如何要做到这一点使用一个循环?当它们完全相同时,我将它们添加到Int64的列表中。这是同一本字典。

+2

而...当你找到2个具有相同属性的项目时,你会做什么? – LightStriker

+2

这是相同的集合/字典吗? – iMortalitySX

+0

什么意思为你的对象_same_? –

回答

1

如果你有KeyValuePairIEnumberable当时的你可以做这样的事情:

public bool AreAllSame(IEnumberable<KeyValuePair<Int64, MyObject>> list) 
{ 
    return list.Select(kv => kv.Value).Distinct().Count == 1; 
} 

不能确定它是否真的优化但是,它的短! : - ]

当然,无论你比较什么都需要具有可比性。

+1

'Distinct()'会比较*实例*而不是属性值。 –

+0

是的,这就是为什么你要比较的对象需要具有可比性,正如我在文章中提到的那样。否则,它将使用默认比较器,如您所述,它只会比较它是否是相同的实例。 :-) – 2012-11-15 15:28:10