我試圖從具有相同值的不同實例中獲得不同的對象列表。我曾嘗試使用獨特和羣體。我通過工作得到了該組,但我不想在更新對象時重寫該函數。按對象的所有屬性分組
// my object:
public class dummyObject
{
public int Id { get; set; }
public string Name { get; set; }
}
[TestMethod]
public void dummytest()
{
// my list:
var list = new List<dummyObject>
{
new dummyObject{ Id = 1, Name = "derp" },
new dummyObject{ Id = 2, Name = "derp" },
new dummyObject{ Id = 1, Name = "flerp" },
new dummyObject{ Id = 1, Name = "derp" },
};
// this wont work, unless I override the GetHashCode and Equals function
var result = list.Distinct(); // count = 4
Assert.AreEqual(4, result.Count());
// this will work if I group by all the properties that matter
var result2 = list
.GroupBy(x => new { x.Id, x.Name })
.Select(x => x.First());
Assert.AreEqual(3, result2.Count());
}
我不想指定所有重要的屬性,因爲可能會添加更多的屬性,並且我希望保持這種低維護。我知道我會一直想要使用所有的屬性。
有沒有更好的方式做我想做的事情?或者我堅持使用Group by或覆蓋GetHashCode
和Equals
函數?
我不知道的情況下,使用您的'dummyObject'類,但也許你需要重寫'Equals' /'GetHashCode'方法,使'Distinct'會工作。 –
緩慢的方式是'.GroupBy(X => JsonConvert.SerializeObject(X))' –
你能'dummyObject'一個'struct'而不是'class'? – Vikhram