如何将Linq表达式作为List返回?

时间:2016-10-05 23:52:40

标签: c# linq

如何将以下代码返回到列表

public List<tbl_Employee> getProgramNames()
{
    IQueryable<tbl_CentralLookup> data = db.tbl_Employee.Where(c => c.EmpName == "sam").Select(o => new { o.LookupId, o.EmpName });       
    return data;
}

1 个答案:

答案 0 :(得分:2)

您的方法的返回类型是tbl_Employee的列表。因此,请确保您的LINQ表达式也返回相同类型的数据。

public List<tbl_Employee> getProgramNames()
{
    return  db.tbl_Employee.Where(c => c.EmpName == "sam").ToList();
}

假设db.tbl_Employee类型为DbSet<tbl_Employee>

另外,我建议您按照PascalCasing进行C#方法。所以我会将getProgramNames重命名为GetProgramNames:)

编辑根据评论中的问题

  

如何指定列名。我想只检索两个数据   列。

如果只需要2列,请为该数据结构创建一个DTO,并使用它来在LINQ表达式中投影数据。

public class EmployeeBasicInfo
{
  public int Id { set;get;}
  public string FirstName { set;get;}
}

现在更改您的方法以返回此DTO的集合而不是实体。

public List<EmployeeBasicInfo> getProgramNames()
{
    return  db.tbl_Employee.Where(c => c.EmpName == "sam")
              .Select(x=> new EmployeeBasicInfo { Id=x.Id, FirstName = x.EmpName })
              .ToList();
}

假设您的tbl_Employee实体类具有Id类型的Int属性