如何避免在 linq 中加载特定列

How to avoid loading a specific column in 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();

有什么办法可以解决这个问题吗?

你为什么要倒着走?

只需 select 您想要的列,不要 select 您不想要的列

而不是 select 全部处理并排除你不想要的,就像你在这里做的那样:

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();

To Do dynamically crud operations , But [jqgrid] Doesn't Work With navigation Property And Lazy loading, I want to avoid loading navigation 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;}
}