我有一個看起來像這樣的(不是我的表不能更改數據)數據表LINQ到獲得不同的屬性
Code Version Description
AAA 0.0.0.0 Test of AAA
AAA 0.0.0.1 Test of AAA
BBB 0.0.0.0 Test of BBB
CCC 0.0.0.0 Test of CCC
CCC 0.0.0.1 Test of CCC
我想返回的獨特的「代碼」僅值的列表。
所以我期望的結果將是:
AAA Test of AAA
BBB Test of BBB
CCC Test of CCC
我創建了一個比較器類:
public class MyComparer : IEqualityComparer<MY_DATA_TABLE>
{
public bool Equals(MY_DATA_TABLE x, MY_DATA_TABLE y)
{
return x.CODE == y.CODE;
}
public int GetHashCode(MY_DATA_TABLE obj)
{
return obj.GetHashCode();
}
}
,並在我的代碼,我有:
var mapCodes = (from mtc in GetAllData() select mtc)
.Distinct(new MyComparer())
.ToList();
但是它仍然返回整個內容都回來了。
我怎樣才能獲得一個清晰的財產清單?
Unlikley來檢查代碼是你的問題,但你的GetHashCode的實現是不正確的。如果對象是「相等的」,那麼HashCodes應該匹配,所以你想'obj.Code.GetHashCode()' – BradleyDotNET
*我如何通過屬性得到一個獨特的列表?**通過**正確**實現'GetHashCode'。 –
你可能想要MoreLinq的DistinctBy擴展 –