在group by元素中,选择与其他列中的null不同的值

时间:2017-03-13 22:45:04

标签: c# linq list lambda

我有一个清单:

| Student    |       Sport |           
|------------|-------------|    
| AA         |             |        
| AA         |   Football  |           
| BB         |   Basketball|         
| BB         |             |     

我希望按名称分组,并在运动中显示与null或空不同的值。

到目前为止,我有了这个想法

var result = from elements in studenList
               group elements by elements.name into grouped
               select new student {
                 name = grouped.First().name,
                 sport = // HOW I GET THIS PART??
               };

我尝试过类似的事情:

sport =  string.Join(" ", (grouped.Select(x => x.sport).Distinct().ToArray()))

但它在运动名称之间增加了许多空格。

1 个答案:

答案 0 :(得分:3)

你几乎就在那里,只需添加一个过滤器来删除空和空条目:

sport =  string.Join(
    " ", 
    grouped.Select(x => x.sport)
        .Where(x => !string.IsNullOrEmpty(x))
        .Distinct())