2016-03-23 10 views
0

データのリスト(Element)があり、その中に別のリスト(SourceElement)が含まれています。そして、私はそれらを繰り返さずにすべてのlinkidプロパティを取得したい。これどうやってするの?linqを使って別のリストの中にデータリストをグループ化するには?

public class Element 
{ 
    public int ElementId { get; set; } 
    public List<SourceElement> Source { get; set; } 
} 

public class SourceElement 
{ 
    public int SourceElementId { get; set; } 
    public int LinkId { get; set; }  
} 

これは、今

  • 例(要素)である方法である:

    ELEMENTID = 1元= {1,2}、{1,3}、{1、4 }、{1,7}

    ELEMENTID = 2元= {2,2}、{2,3}、{2,4}、{2,8}

最終出力はこのようにする必要があります。

LinkIds = {2,3,4,7,8}

助けていただければ幸いです。

+0

それでは、あなたは 'Distinct' LinkIdを' List 'から欲しいのですか? –

答えて

1

あなたはelementsのリストがあるとします。

var linkIds = elements.SelectMany(e => e.Source) 
        .Select(s => s.LinkId) 
        .Distinct(); 
0

使用SelectMany、すべてのSourceElementのコレクションを取得し、あなたががLinkId

var output = string.Join(",", elements.SelectMany(s=>s.Source) 
             .Select(l=>l.LinkId) 
             .Distinct() 
         ); 

var formattedoutput = String.Format("LinkIds = {{0}}", output); 

出力

LinkIds = {2,3,4,7,8} 
に平らに配列 Distinctをgettedたら
関連する問題