LINQ: Внутреннее присоединение к первой строке в подзапросе? - PullRequest
4 голосов
/ 16 февраля 2011

Кто-нибудь может помочь?

У меня есть 2 класса, в основном 1 содержит участников и другие сессии.

Они объединены общим полем "имя"

Есть 1 участник, но может быть МНОГО Сессий.

Так что, если я сделаю стандартное соединение, я верну 1 участника и много сессий ... Я просто хочу вернуть 1-й ряд сессий.

сеанс имеет поле с именем SessioEndTime. Поэтому мне нужно заказать по DESC, чтобы выбрать первую запись.

Это мой linq, у меня слишком много возвратов, я думаю, что мне нужен подзапрос, но я немного запутался.

  var sessions = from m in this.members 
                   join s in this.sessions
                   on m.Name equals s.Name
                   select new { MemberName = m.Name, SessionTime = s.SessioEndTime};

Помощь, помощь очень ценится.

EDIT

Чтобы прояснить ситуацию, представьте, что у меня 5 участников, у каждого из них есть МНОЖЕСТВО сессий. Я просто хочу получить свои 5 участников, но только с 1 сеансом каждый, этот сеанс является последним сеансом, который можно получить из SessionEndTime.

Я думаю, я сделал это немного яснее, если нет, пожалуйста, дайте мне знать.

1 Ответ

7 голосов
/ 16 февраля 2011

Попробуйте это:

var sessions =  
    from m in this.members                     
    join s in 
    (
        from se in this.sessions
        group se by se.Name into g
        select new {Name = g.Key, SessioEndTime = g.Max(a=>a.SessioEndTime)}
    )   
    on m.Name equals s.Name                    
    select new { MemberName = m.Name, SessionTime = s.SessioEndTime}
...