Как избежать загрузки определенного столбца в linq

Вопрос:

В Linq-to-SQL можно получить все данные из объекта сущности с помощью метода ToList:

db.users.Tolist();

Также можно получить несколько столбцов с помощью метода select:

var users= db.users.Select(
t => new
{
t.c1,
t.c2,
t.c3,
.
.
});

Но я хочу получить все столбцы без одного конкретного столбца:

db.users.exclude(t.c2).tolist();

Есть ли способ решить эту проблему?

Лучший ответ:

Делать динамически свернутые операции, но [jqgrid] не работает с навигационным свойством и ленивой загрузкой, я хочу, чтобы избежать загрузки навигации. Property in backend Cod

Добавить db.Configuration.LazyLoadingEnabled = false; перед вашим запросом.

db.Configuration.LazyLoadingEnabled = false;
db.users.Tolist();

Если есть коллекции, которые вы хотите загрузить, вам придется использовать Include

db.Configuration.LazyLoadingEnabled = false;
db.users.Incude(x => x.Roles).Tolist();

ИЛИ

Если вы возвращаетесь с помощью json.net, который является стандартной библиотекой, добавьте JsonIgnore в свойства, которые вы не хотите сериализовать для клиента. Пример:

public class User {
  [JsonIgnore]
  public ICollection UsersRoles {get;set;}
}

Ответ №1

Почему вы пытаетесь идти назад?

Просто выберите нужные столбцы и не выбирайте тот, который вам не нужен.

вместо того, чтобы выбирать их все и исключать тот, который вы не хотите, как вы здесь:

var users= db.users.Select(
t => new
{
t.c1,
t.c2,
t.c3,
.
.
.

});

сделайте это вместо этого:

var users= from u in db.users

select u.c1, u.c3, etc... ;  //Dont select what you don't want

Или это тоже будет хорошо:

var users = from u in db.users

select new
{
c1 = u.c1,
c3 = u.c3
}.ToList();

Оцените статью
TechArks.Ru
Добавить комментарий