【问题标题】:Exclude a column from a select using LINQ使用 LINQ 从选择中排除列
【发布时间】:2013-10-19 06:23:33
【问题描述】:

我正在使用实体框架代码优先开发 WCF RESTful Web 服务。

我有一张表Users 有很多列。我这样做是为了获取特定用户:

context.Configuration.ProxyCreationEnabled = false;
var users = from u in context.Users
            where u.UserId == userId
            select u;

在这个表上,有一个密码列,我不想返回这个列。

如何从该选择中排除密码列?

【问题讨论】:

标签: c# sql linq entity-framework


【解决方案1】:

说起来很难过,但是

您无法选择直接排除任何特定列。您可以使用延迟加载列。

最简单且不受欢迎的方法是包含您想要的列。

【讨论】:

    【解决方案2】:

    这样的另一种方式,

       var users = from u in context.Users
                    where u.UserId == userId
                    select new 
                    {
                        col1 = u.UserId, 
                        col2 = u.Watever
                    }.ToList();
    

    【讨论】:

      【解决方案3】:

      在你的选择语句中指定你想要的每一列:

      var users = from u in context.Users
      
              where u.UserId == userId
      
              select u.UserId, u.Watever, etc... ;
      

      【讨论】:

      • 这个语法给了我一个编译时错误“; expected”。您的意思是对匿名类型使用 new { u.UserId, u.Whatever, ... } 语法吗?
      • 不,您只是忘记了末尾的分号或打错了字。当然,您不会键入“等”。在我的示例中显示。在列出的最后一列之后,去掉逗号并以分号结束... select u.UserId, u.AnotherColumn, u.LastColumn;
      • 编译器拒绝您输入的方式。 Here 是如何选择多列。我正在更新你的答案。
      【解决方案4】:

      您可以为每个表创建多个 LINQ 对象。我会创建一个包含您需要的字段和一个没有的字段。但它使 CRUD 操作更加困难。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多