2011-02-07 3 views
1

Есть много вопросов, связанных с Linq, но быстрый просмотр содержимого, похоже, не отвечает на мой вопрос, достаточно конкретно для моего ограниченного интеллекта.Сплит-список в наборах с использованием Linq

У нас есть таблица с именем PropertyInteractions, в которой хранятся потоковые сообщения через идентификатор потока, идентификатор потока - это Id первоначальной записи взаимодействия. Учитывая следующий запрос Linq (который извлекает все взаимодействия в отношении пользователя), как я могу разделить interactions на списки PropertyInteraction s, сгруппированные по Id?

Dim interactions = (From interaction In propertyItem.PropertyInteractions _ 
        Where (interaction.SenderId = CurrentUser.ID OrElse _ 
          interaction.RecipientId = CurrentUser.ID) AndAlso _ 
          interaction.InteractionType = InteractionType.ViewRequest _ 
        Order By interaction.ThreadId _ 
        Select interaction) 

EDIT:

Учитывая вход Джона, это то, что я пришел в тот момент, хотя она может быть изменена ...

Dim interactions = _ 
    (From interaction In propertyItem.PropertyInteractions _ 
    Where (interaction.SenderId = CurrentUser.ID OrElse _ 
      interaction.RecipientId = CurrentUser.ID) AndAlso _ 
      interaction.InteractionType = InteractionType.ViewRequest _ 
    Order By interaction.ThreadId _ 
    Group interaction By interaction.ThreadId Into Group) 
+0

Вашего заказа немного странно сейчас ... почему вы приказывая сгруппированным просмотреть результат упорядочения с помощью 'interactive.SendDate'. Это не вычисляет ... :) –

+0

Как только что стало очевидным. ;) То, что я пытался сделать с заказом, теперь все равно неактуальен, поэтому я могу просто болеть группировкой. –

ответ

4

Похоже, вы просто хотите :

Group interaction By interaction.Id Into Group 

Смотрите docs for the Group By clause для получения дополнительной информации. (Похоже, он работает тонко отличается от аналогичного синтаксиса выражений C# запроса, специалисты VB могут быть вокруг, чтобы дать более подробную консультацию.)

+0

Отлично, Джон - спасибо! –

4
Dim groupedInteractions = interactions.GroupBy(Function(i) i.Id) 
+0

Там, @Martinho, спасибо за конверсию C# -> VB.Net. Не очень много кодирования VB, поэтому синтаксис лямбда не проходит легко. –

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