如何使用Linq方法语法获得唯一结果

时间:2011-09-28 21:26:53

标签: c# linq unique

我在表格中有以下数据:

e.g。数据

0, 'Ford'    
1, 'Toyota, Toyota'  
2, 'BMW'  
3, 'Porsche, Porsche'  
4, 'BMW'  

我需要将此数据放在以下类型List<Tuple<int, string>> carList中,以便我的列表中的结果显示如下:

0, 'Ford'    
1, 'Toyota'  
2, 'BMW'  
3, 'Porsche'  
4, 'BMW'  

使用以下伪代码:

while (SQLiteDataReader.Read())  
{  
    carList.Add  
    (  
        new Tuple<int, string> (   
                                 SQLiteDataReader.GetInt32(0) ,   
                                 SQLiteDataReader.GetString(1).[Some extension method to produce unique items]
                               );
    )  
}

请注意,如果有重复项目(丰田,保时捷),复制将始终使用相同的名称。即你不会得到像'丰田,福特'这样的东西。

是否有一些扩展方法会删除重复部分?

2 个答案:

答案 0 :(得分:4)

这应该可以解决问题:

SQLiteDataReader.GetString(1).Split(',').First().Trim()

答案 1 :(得分:3)

如果您希望通过linq查询完成所有操作,这应该可以。

如果您只是想修复您的伪代码,那么scottm的解决方案应该可行。

LinqDataContext db = new LinqDataContext();
List<Tuple<int, string>> results = 
   db.Cars.AsEnumerable()
          .Select(c => Tuple.Create(c.id, c.Make.Split(',')[0].Trim()))
          .ToList();