2013-02-15 6 views
-2

У меня есть класс:Linq: возвращение Список содержал список

public class BigClass 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    ... 
    public List<LittleClass> LittleClassList { get; set; } 
} 

Можно ли вернуть список своих экземпляров в одном запросе к БД? Этот подход вызывает много запросов к базе данных:

List<BigClass> data = context.Table1_Name ... 

foreach(var item in data) 
{ 
    item.LittleClassList = context.Table2_Name ... 
} 

Предпочтителен синтаксис лямбда. Спасибо.

+0

Ваше сообщение намерение неясна. пожалуйста, уточните, чтобы кто-то мог вам помочь. –

ответ

-1
List<LittleClass> littleClassesOfListBigClasses = new List<LittleClass>(); 

    context.BigClass.ToList().ForEach(e=>littleClassesOfListBigClasses.AddRange(e.LittleClassList)); 

для Dave A специальным образом.

Что я думаю OP хочет: Он хочет взять все LittleClass es, хранящиеся в db, одним лямбда-выражением.

Объяснение о том, как же мой код работает:

1) Я использую EF (рамочный объект). Если вы не знаете, что это такое, вы можете прочитать информацию here. В вопросе я вижу, что ОП знает, что такое EF и как его использовать, поэтому я не нашел необходимости объяснять. 2) Я беру все данные из таблицы BigClass из БД и вывести его в виде списка (в 1 запрос) 3) Я ForEach (от Linq), чтобы пройти через возвращенного BigClass список и добавить все LittleClass эс к littleClassesOfListBigClasses

Заметьте также вы можете добавить Where, прежде чем ToList получить не все данные, хранящиеся в BigClass таблице, но только часть, это будет выглядеть примерно так:

context.BigClass.Where(some lambda-expression).ToList() 

Так что мой ответ ясен сейчас?

+0

Пожалуйста, когда вы говорите «-», почему вы думаете, что это плохое решение? – Maris

+0

1) OP неясен. 2) ваш пост - это задумчивый взгляд на неопределенное предложение. Никому не нужно. –

+0

О чем ты говоришь? После использования этих двух строк вы получите все 'LittleClass', хранящиеся в db в littleClassesOfListBigClasses. – Maris

1
from big in context.TableA 
from little in big.LittleClassList 
select little; 

И в формате расширения

Context.TableA.Where(...).SelectMany(x=>x.LittleClassList); 
+0

Yeap ваш путь будет лучше. Up! – Maris

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