Dinstinct重载
var result = materialRelation.Select(x => new MaterialListOutput { MarkProgramId = x.FkMarkProgramId, MarkProgramName = programlist.Where(p => p.Id == x.FkMarkProgramId)?.FirstOrDefault()?.ProgramName, MaterialId = x.FkMaterialId, Status = materialList.Where(p => p.Id == x.FkMaterialId).FirstOrDefault().Status }).Distinct().ToList();
使用Distinct的时候,不会过滤重复数据
/// <summary> /// distince重载 /// </summary> private class MaterialDistinct : IEqualityComparer<MaterialListOutput> { public bool Equals(MaterialListOutput x, MaterialListOutput y) { return x.MaterialId == y.MaterialId && x.MarkProgramId==y.MarkProgramId&&x.Status==y.Status; } public int GetHashCode(MaterialListOutput obj) { return $"{obj.MaterialId}_{obj.MarkProgramId}_{obj.Status}".GetHashCode(); } }
使用以上方法重载
var result = materialRelation.Select(x => new MaterialListOutput { MarkProgramId = x.FkMarkProgramId, MarkProgramName = programlist.Where(p => p.Id == x.FkMarkProgramId)?.FirstOrDefault()?.ProgramName, MaterialId = x.FkMaterialId, Status = materialList.Where(p => p.Id == x.FkMaterialId).FirstOrDefault().Status }).Distinct(new MaterialDistinct()).ToList();
重载之后可以过滤了
浙公网安备 33010602011771号