簡體   English   中英

LINQ獲得了獨特的價值觀

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM