LINQ-запрос с указанным количеством строк в задаче подзапроса - PullRequest
0 голосов
/ 29 апреля 2010

Я пытаюсь написать следующий запрос в LINQ, но, похоже, не могу получить его правильно.

select p.*
from Person p
inner join PersoniPhones i ON p.PersonID = i.PersonID
where p.PersonID in
(
    SELECT PersonID
    FROM
        (
        SELECT Top 10 PersonID, iPhoneID
        FROM iPhone
        ORDER BY LastPlayedDate DESC
        ) as t
)

Я пробовал следующее, но он не возвращает правильно

        var tenIPhones = from phone in context.PersonIPhones
                         .OrderByDescending(i => i.LastPlayedDate)
                         .Take(10)
                         select new { phone.PersonID, phone.IPHoneID};
        var people = from p in context.Person
                 join t in tenIPhones on p.PersonID equals t.PersonID
                 select p;

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 29 апреля 2010

А как же

var subsetPhone = iPhones.OrderByDescending(x => x.LastPlayedDate).Take(10).Select(x => new { PersonId = x.PersonId, iPhoneId = x.iPhoneId });
var people = persons.Where(x => subsetPhone.Where(y => y.PersonId == x.Id).Count() > 0);
1 голос
/ 29 апреля 2010

Это работает в LinqPad уведомление IPhoneID и не IPHoneID

var tenIPhones = (from i in PersoniPhones
    .OrderByDescending(i => i.LastPlayedDate)
    .Take(10)
    select new { i.PersonID, i.IPhoneID});

tenIPhones.Dump();  

var people = from p in Persons
         join t in tenIPhones on p.PersonID equals t.PersonID
         select p;

people.Dump();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...