使用linq从var中提取一列

时间:2012-05-15 12:30:35

标签: c# linq-to-entities

我有类似的东西

var emp = db.Employees.toList();

在我的employees表中我有emp名称,emp id和salary,使用linq和lambda表达式,我如何在另一个变量中访问emp id。 我已经尝试过查找它,找不到使用带有lambda表达式的linq来实现它的解决方案

var employeeLeaves = db.Leaves
     .Include("Employee")
     .Include("Employee.Manager")
     .Where(l => l.Status.Id == 1)
     .GroupBy(l => l.Employee.Manager.Id)
     .Select(l => l.GroupBy(k=>k.Employee.Id).Select(j=>j.GroupBy(‌​p=>p.GroupId)))
     .ToList(); 

这是我的实际查询,不要问我是怎么写的..:P现在我想从employeeLeaves获取id列并将其存储在另一个变量中

5 个答案:

答案 0 :(得分:13)

目前还不完全清楚你要做什么,这就是为什么你用不同的方法得到这么多答案的原因。如果您正试图将“员工集合”变成“ID集合”,那么您需要这样的内容:

var ids = emp.Select(x => x.Id);

或更直接:

var ids = db.Employees.Select(x => x.Id);

(可选择在每个结尾处加ToList。)

我强烈建议您在一本好书或教程的帮助下,从头开始,彻底地学习LINQ(以及与var等有些相关的语言特性)。通过找到一些有点像你想做的样品来零碎学习,这不是一个好方法,IMO。

答案 1 :(得分:2)

var empId = db.Employees.Single(x => x.id == 5).Id;

答案 2 :(得分:0)

试试这个语法:

var empIds = db.Employees.Select(e=>e.EmpID)

答案 3 :(得分:0)

您可以使用select。也许是这样的:

var result=db.Employees
              .Select(s=>s.emp_id);

答案 4 :(得分:0)

Database.Tablename.Single(x => x.id == anyId)

这应该选择单行