【问题标题】:Union in linq entity frameworklinq 实体框架中的联合
【发布时间】:2012-04-30 15:45:19
【问题描述】:

我想在实体框架中执行以下可以很容易在sql中完成的工作。

select 0 as employeeid, 'Select' as employeeName 
union

Select employeeid, employeeName from tblemployee where IsActive=true

请帮忙。

【问题讨论】:

标签: .net entity


【解决方案1】:

可能是这样的:

UNION

var t= Enumerable
         .Range(0,1)
         .Select (e =>
                    new{employeeid=0,employeeName="Select"})
       .Union(
          db.tblemployee
          .Select (u =>
                   new {employeeid=u.employeeid,employeeName=u.employeeName} ));

UNION ALL

var t= Enumerable
         .Range(0,1)
         .Select (e =>
                    new{employeeid=0,employeeName="Select"})
       .Concat(
          db.tblemployee
          .Select (u =>
                   new {employeeid=u.employeeid,employeeName=u.employeeName} ));

其中 db 是数据上下文

【讨论】:

  • 你能解释一下为什么以“Enumerable.Range(0,1)”开头吗?
【解决方案2】:

假设 tblemployee 被映射到名为 Employee 的实体,并且您的 DbContext 有一个名为 Employees 的集合 Employees,您可以执行以下操作:

var allEmployeesPlusAnEmptyOne = 
    new[] { new Employee { EmployeeId = 0, Name = "Select" } }
    .Concat(dbContext.Employees.Where(e => e.IsActive));

...正如@Arion 提到的,如果您希望实体框架删除重复的对象,您可以使用Union(),尽管我认为不会有任何重复对象。

【讨论】:

  • 非常感谢您的帮助。您的代码运行良好。
猜你喜欢
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
  • 2018-11-30
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
相关资源
最近更新 更多