根据列表中的特定列值选择“不同行”

时间:2013-05-22 04:14:58

标签: c# asp.net list

我有以下列表Lsit<Car> lstcarIP它有以下数据

ID  | Name | Year
0 - Zen    - 1990
1 - Alto   - 2003
3 - Zen    - 2004
4 - Santro - 2000
5 - Alto   - 2003

无论输出list<Car> lstFinal应具有的ID和年份

   ID  | Name | Year
    0 - Zen    - 1990
    1 - Alto   - 2003 
    4 - Santro - 2000

 ID  | Name | Year 
    3 - Zen    - 2004
    4 - Santro - 2000
    5 - Alto   - 2003

即如果名称再次出现,则只应向list<Car> lstFinal添加一个条目。我尝试使用LastorDefaultGroupBy

 lstFinal= lstcarIP.GroupBy(s => s.Name)
                            .Where(g => g.Count() > 1)
                             .SelectMany(g => g)
                             .ToList<Car>();

但无法获得正确的结果。你能纠正我并指出我的错误。 谢谢您的帮助! :)

1 个答案:

答案 0 :(得分:6)

您只需GroupBy,然后获取First

 lstFinal = lstcarIP.GroupBy(s => s.Name)
                    .Select(g => g.First())
                    .ToList<Car>();