2013-02-12 4 views
1

Я написал функцию поиска в моем MVC-проекте, он соответствует базе данных.Linq, отфильтровать кратные

базы данных имеют-структуру, как это:

Имя - строка (имя данных)

подимени - струна (подимени данных)

SomeData - Int (фактическое данные)

Так что, если у меня есть 100 сообщений с именем и определенным поднаутом с разными значениями для данных. а затем 100 сообщений с тем же именем, но с другим именем.

Теперь, когда я ищу базу данных, я использую этот linq-код;

 var names = db.Graphs 
      .Where(r => r.Name.Contains(term)) 
      .Take(5).Distinct() 
      .Select(r=> new {label = r.Name}); 

Я thougth, что это Maby бы получить мед 5 различных ответов, но ... доцент

я получаю пять первых 100 поста, я хотел бы, чтобы фильтровать, так что я беру только имя стоимости создания эксклюзивного с подзаменами. Итак, в приведенном выше примере я бы оживил 2 записи.

Почувствуйте себя, как я пробовал все и не смог, поэтому любой ввод был бы appriciated.

+0

Вы пытались использовать Distinct? http://msdn.microsoft.com/en-us/library/system.linq.enumerable.distinct.aspx –

+1

Запрос не имеет ничего общего с структурой базы данных, которую вы указали в начале вашего вопроса. Кроме того, вы не показывали никаких выборочных данных, поэтому неясно, почему образец запроса должен возвращать 2 записи (а не 1 или 4). –

+1

_ «Чувствую, что я все испробовал». Но вы не показали, что вы пробовали. –

ответ

0
var names = db.Graphs 
    .Where(r => r.Name.Contains(term)) 
    .GroupBy(s=>s.Name).Take(5) 
    .Select(r => new { label = r.FirstOrDefault().Name }); 

Вы должны применить Distinct() до Take(). Надеюсь, это поможет.

+0

Спасибо за ответ ... Я действительно не знаю, что я делаю неправильно, но я не получаю его, чтобы вернуть даже кратные имя. – Tim

+0

Привет, я обновил решение, попробуйте. Я надеюсь, это поможет. – ethicallogics

+0

Спасибо за ответ, похоже, что GroupBy все разобрался ... Я не собираюсь его вычислять. Thans много для вашей помощи. :) – Tim

Смежные вопросы