【问题标题】:Linq select different columnsLinq选择不同的列
【发布时间】:2009-11-20 05:31:55
【问题描述】:

我想根据一些变量选择不同的列

而不是做这样的事情

if(selectLastName)
   var res = from e in ctx.Employees
             select new {e.FirstName, e.LastName};
else
   var res = from e in ctx.Employees
             select new {e.FirstName}

我怎样才能重写这个?

【问题讨论】:

    标签: linq


    【解决方案1】:

    这只是对 Mark 答案的修改,其中类型中总会有一个姓氏,但您不会总是从数据库中提取值。我会写它作为对他的回答的评论,但 cmets 中没有代码格式。

    ctx.Employees.Select(e => new {
    FirstName = e.FirstName,
    LastName = selectLastName ? e.LastName : null
    });
    

    【讨论】:

      【解决方案2】:

      为什么不选择整个模型并在需要时使用字段?

      【讨论】:

      • 我不得不同意,因为在 if/else 块结束之后试图决定如何处理 var res 将非常困难。
      • 只是我选择的字段是 xml 字段。所以有时候我不想把它带回来
      【解决方案3】:

      您尝试执行的操作不起作用,因为两个 vars 具有不同的类型。试试这样的:

       var res = from e in ctx.Employees
                 select new {e.FirstName, selectLastName ? e.LastName : null};
      

      【讨论】:

        【解决方案4】:

        基于某个变量的列

        如果您需要更大的灵活性,可以使用动态 LINQ 库来执行此类操作。因此,您可以动态构建它们,而不是编写强类型的 LINQ 语句。

        一些信息here。那里有很多资源,包括一些 Stack Overflow 问题,例如 this one

        【讨论】:

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