2013-03-09 4 views
0

Я следующий рамочный объект запроса, где я получил 40 пунктов:Проекция с детьми лиц

context.Questions 
    .Where(x => 
    x.Access >= 1 && 
    x.Enabled == true 
).ToList(); 

Затем я попробовал проекцию следующим образом:

context.Questions 
    .Where(x => 
    x.Access >= 1 && 
    x.Enabled == true 
) 
    .Select(x => new { 
    Duration = x.Duration, 
    Text = x.Text, 
    Answers = x.Answers.Select(y => new { 
     Correct = y.Correct, 
     Text = y.Text 
    }) 
    }).ToList(); 

В этом случае я получаю 150 пунктов. .. Что я делаю не так?

В принципе мне нужен список вопросов и каждый вопрос, чтобы иметь список ответов.

Спасибо, Miguel

ответ

1

Дайте это попробовать

context.Questions 
    .Where(x => 
    x.Access >= 1 && 
    x.Enabled == true 
) 
    .Select(u => new { 
    Duration = u.Duration, 
    Text = u.Text, 
    Answers = u.Answers.Select(y => new { 
     Correct = y.Correct, 
     Text = y.Text 
    }) 
    }).ToList(); 

Причиной этого решается ваша проблема в том, что, прежде чем вы использовали

.Select(x => ..) 

где х => ссылается на оригинал .Where(x =>), поэтому он ссылается на ваш полный список объектов, а не на отфильтрованный список из вашего запроса.

+0

Это, кажется, решает эту конкретную проблему. Почему это? Но у меня возникает новая проблема. Не могли бы вы проверить это? Это то, что я и имел, когда пытался решить начальную должность. Я только что опубликовал обновление. Спасибо –

+0

Спасибо. Я сделаю так ... –