2013-01-02 12 views
3

У меня есть этот кодLambda Выражение LINQ Выберите элементы

var list = _db.Projects.Where(item => item.Loc =="IN").Select(p => new {id=p.Id, title=p.Title,pc=p.PostalCode }); 

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

Вопросы:

  1. как написать лямбда-выражения для выбора? LINQ
  2. Как уменьшить количество данных, читаемых в базе данных, путем выбора конкретных столбцов, структуры сущностей?
+1

hmm ... Непонятно, что вам нужно, поскольку код, который вы отправили, кажется, отвечает на ваш собственный вопрос. Вы можете быть более конкретным? Вы хотите, чтобы возвращаемые объекты имели определенный тип? Кроме того, если у вас нет столбцов, в которых хранятся большие объемы данных, выбор меньшего количества столбцов вряд ли улучшит вашу производительность. –

+0

Привет, Бен Тидман, мне нужно построить динамический запрос с требуемыми полями. поэтому мне нужно получить динамический код для. Выбрать (p => new {id = p.Id, title = p.Title, pc = p.PostalCode}), используя выражения lamda или выражения linq, не знаю! –

+0

Если вы хотите создать анонимный тип динамически (что вам кажется, что вам нужно), как вы собираетесь получать доступ к своим членам? – svick

ответ

1

Посмотрите на выражение компилятор С # генерируемой и попытаться повторить то, что он делает:

Expression<Func<Project, object>> lambda = 
    (Project p) => (object)new {id=p.Id, title=p.Title,pc=p.PostalCode }; 

Я надеюсь, что этот код компилируется. Если нет, вы наверняка сможете это исправить. Затем просмотрите содержимое переменной lambda.

Обратите внимание, что приведение к object только для компиляции. Вам не нужно/нужно, чтобы это было производство.

+0

Привет, мне нужно изменить. Выберите (p => new {id = p.Id, title = p.Title, pc = p.PostalCode}); с обязательными полями. –

+0

@RameshBolla Посмотрите на выражение, сгенерированное компилятором C#, чтобы вы узнали, как он выглядит. Вы должны сами создать выражение, которое содержит только необходимые поля. Используйте класс 'Expression'. – usr

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