Tag: 迥然不同

C#与IEnumerable <T>不同的自定义IEqualityComparer

这是我想要做的。 我正在使用LINQ to XML查询XML文件,这给了我一个IEnumerable <T >对象,其中T是我的“Village”类,充满了这个查询的结果。 一些结果是重复的,所以我想对IEnumerable对象执行Distinct(),就像这样: public IEnumerable<Village> GetAllAlliances() { try { IEnumerable<Village> alliances = from alliance in xmlDoc.Elements("Village") where alliance.Element("AllianceName").Value != String.Empty orderby alliance.Element("AllianceName").Value select new Village { AllianceName = alliance.Element("AllianceName").Value }; // TODO: make it work… return alliances.Distinct(new AllianceComparer()); } catch (Exception ex) { throw new Exception("GetAllAlliances", ex); } } 由于缺省比较器不适用于Village对象,因此我实现了一个自定义比较器,如在AllianceComparer类中所示: public […]