2016-03-23 45 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} 
相关问题