Я сделал некоторые исследования, прежде чем задать этот простой вопрос, но до сих пор не могу заставить его работать ...LINQ Distinct() не работают даже реализованы Equals() и GetHashCode()
Ниже мой класс объекта и мой LINQ запрос
public class ItemGridViewModel: IEqualityComparer<ItemGridViewModel>
{
public ItemGridViewModel() { }
public int ItemID { get; set; }
public string Code { get; set; }
public string Description { get; set; }
public decimal Qty { get; set; }
public bool Equals(ItemGridViewModel x, ItemGridViewModel y)
{
return x.ItemID == y.ItemID;
}
public int GetHashCode(ItemGridViewModel obj) { return obj.ItemID; }
}
var query = (from ccp in CostCenterParaQuery
where ccp.CostCentreID != null && costCenterList2.Contains(ccp.CostCentreID.Value)
select ccp into g
from s in StoreRoomQuery
where s.CostCentreCode == g.CostCentreCode
select s into g2
from b in BinItemStatQuery
where b.Qty > 0 && b.IsFrozen == "N" && b.StoreroomID == g2.StoreroomID
select b into g3
from i in ItemsQuery
where ((i.ItemID == g3.ItemID) &&
(whereClause.Code == null || i.ItemCode == whereClause.Code) &&
(whereClause.Description == null || i.Description == whereClause.Description))
select new ItemGridViewModel()
{
Qty = g3.Qty,
Code = i.ItemCode,
Description = i.Description,
ItemID = i.ItemID
}).Distinct();
Но результирующий набор явно дублируют несколько ItemGridViewModel
с таким же ItemID ...
Каковы возможные причины & как я могу ее решить?
Спасибо, я тупой, надеюсь кто-то может исправить это тоже – shole
@shole - не стоит беспокоиться. Это распространенная ошибка. Это не значит, что вам не нужно, только вам нужно больше практики. –
Или просто регулярное 'переопределение'' Object.Equals'/'Object.GetHashCode' будет –