[英]LINQ getting Distinct values
我知道有關於這個主題的幾個問題。 然而; 我找不到與我的問題直接相關的一個。
我在DB中有3個表,這3個表中的PK在XRef表中形成一個復合PK。
我需要能夠根據2個鍵選擇不同的項目,以便在報告上顯示。
public IEnumerable<AssemblyPrograms> GetProgramAssemblies()
{
var assembliesList = (from c in eModel.Assemblies.ToList()
join d in eModel.Programs_X_Assemblies_X_Builds
on c.AssemblyID equals d.AssemblyID
join p in eModel.Programs
on d.ProgramID equals p.ProgramID
join a in eModel.AssemblyTypes
on c.AssemblyTypeID equals a.AssemblyTypeID
select new AssemblyPrograms
{
AssemblyID = c.AssemblyID
,ProgramID = d.ProgramID
,AssemblyName = c.AssemblyName
,AssemblyPrefixName = c.AssemblyPrefixName
,ProgramName = p.ProgramName
,AssemblyTypeName = a.AssemblyTypeName
,AssemblyTypeID = a.AssemblyTypeID
});
return assembliesList;
}
這是我的查詢以及我需要從表中提取的內容
在我的XRef表中,我將AssemblyID,ProgramID和BuildID作為我的復合PK。
從AssemblyID到ProgramID可以有很多關系。 BuildID是分隔它們的關鍵。
我需要將Distinct AssemblyID拉到我的報告的ProgramID關系,可以忽略BuildID。
我在我的查詢中嘗試過.Distinct()以及其他一些無用的東西。
我很感激任何人都可以給我的幫助。
謝謝
接受自定義相等比較器的Distinct重載怎么樣? 像這樣的東西:
class AssemblyComparer : EqualityComparer<AssemblyPrograms> {
public override bool Equals(AssemblyPrograms x, AssemblyPrograms y) {
return x.ProgramID == y.ProgramID && x.AssemblyID == y.AssemblyID;
}
public override int GetHashCode(AssemblyPrograms obj) {
return obj.ProgramID.GetHashCode() ^ obj.AssemblyID.GetHashCode();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.