Как бы я достиг уникального результата, используя синтаксис метода Linq - PullRequest
1 голос
/ 29 сентября 2011

У меня есть следующие данные в таблице:

например. данные

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]
                               );
    )  
}

Обратите внимание, что при наличии предметов с дублированием (Toyota, Porsche) дубликат всегда будет иметь одинаковое имя. то есть вы не получите что-то вроде «Тойота, Форд».

Есть ли какой-нибудь метод расширения, который удалит дублирующую часть?

Ответы [ 2 ]

4 голосов
/ 29 сентября 2011

Это должно сработать:

SQLiteDataReader.GetString(1).Split(',').First().Trim()
3 голосов
/ 29 сентября 2011

Если вы хотите выполнить все это с помощью запроса linq, это должно сработать.

Если вы просто хотите исправить свой псевдокод, тогда решение Скотта должно сработать.

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