2009-07-07 11 views
2

私はクラス内にプロパティを持っています。これは、関係から可能なすべての異なるIDを反復処理する必要があります。LinqToSql - ネストされたリストから別のIDのリストを取得する

私は、会社に所属するユーザーの中にいます。企業には、多くのソリューションがあり、各ソリューションには多くの「SolutionPortals」があります。私が望むのは、DBにある "SolutionPortal"(SolutionPortal.PortalID)からのすべての別個の "PortalIds"のリストです。

私の人生では、これを単一のリストとして取得することはできません。もちろん

var solutionIds = from s in this.Company.Solutions.Select(s=>s.SolutionPortals) 
        select s.Select(sp=> sp.PortalID); 

のソリューションのリストがSolutionPortalsの一覧で、そこにあるので、これは、理にかなって、私は自分のリストにJUST IDSを選択する必要があります。私は入れません。

IEnumerable<IEnumerable<int>> // <-- Don't want this 
IEnumerable<int> // <-- I want this 

すべてのヘルプは非常にいただければ幸いです。あなたは、おそらくこのような何か必要

感謝/

答えて

3

SelectManyはここで重要である:

var solutionIds = this.Company 
         .Solutions 
         .SelectMany(s=>s.SolutionPortals) 
         .Select(sp => sp.PortalId) 
         .Distinct(); 
2

var listOfIds = listOfSolutionPortals.SelectMany(sps => sps.Solutions) 
            .Select(sp => sp.PortalId); 
+0

それは私を正しい道に押し込んだ。ありがとう!私は "SelectMany"拡張について知らなかった。とても便利な。 –

1

これが働いた:

var solutionIds = (from s in this.Company.Solutions 
        .SelectMany(s => s.SolutionPortals) 
        select s.PortalID).Distinct(); 

おかげでMehrdadを!

+1

自分自身でクエリ式の構文を使用することを強くお勧めしません。これはもっと読みやすいと思う: 'var solutionIds = this.Company.Solutions.SelectMany(s => s.SolutionPortals).Select(s => s.PortalID).Distinct();' –

+0

@Mehrdad:完全に同意する。 – jason

+0

私は同意する - ありがとう! :) –

関連する問題