Linq选择不同的列

时间:2009-11-19 19:26:47

标签: linq

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

而不是做这样的事情

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}

我怎样才能重写这个?

4 个答案:

答案 0 :(得分:2)

这只是对Mark答案的修改,其中类型中始终存在姓氏,但您不会总是从数据库中提取值。我会把它写成对他答案的评论,但评论中没有代码格式。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您尝试做的事情将无效,因为两个var具有不同的类型。尝试这样的事情:

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

答案 3 :(得分:0)

  

基于某些变量的列

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

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