2016-03-23 49 views
0

我有一個數據列表(元素),它包含另一個列表(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

所以問題是你想從'List '''Distinct' LinkId'? –

回答

1

假設你有elements列表:

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

使用SelectMany並得到所有的SourceElement藏品,一旦你getted扁平陣列Distinct上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} 
相關問題