LINQ表达式帮助 - 查询我的对象模型

时间:2009-06-03 00:18:19

标签: linq

我是LINQ的新手,我正在尝试查询我的业务层(BLL),即模型。我看过一些样本,但似乎没有人能帮助我。

让我说我开始创建一个方法,我想:

public void GetLinqQuery()
{
EmployeeCollection employeeList = EmployeeController.GetAll();  // my usual way of getting employee list

// now I'll attempt using LINQ to get a subset of that collection
var query = from emp in employeeList
    select emp.FirstName,      // *** Intellisense breaks here, why?
}

我做错了吗?鉴于我有对象,如何查询我的收藏/实体?

谢谢!

3 个答案:

答案 0 :(得分:0)

使用IEnumerable<Employee>IQueryable<Employee>可能会更容易。请尝试以下方法:

public void GetLinqQuery()
{
IEnumerable<Employee> employeeList = EmployeeController.GetAll() as IEnumerable<Employee>;

var query = from Employee emp in employeeList
            select emp.FirstName      // Does intellisense break now?
}

答案 1 :(得分:0)

编写以下代码时

Employee[] Employees= GetEmployee();
var query =
from c in Employees
select c.Name;

编译器生成此代码:

Employee[] Employees= GetEmployee();
IEnumerable<Employee> query =
Employees.Select( c => c.Name);

所以你可以使用上面的任何一个..

即使您可以使用键入的列表集合

List<Employee> Employees = query.ToList();

答案 2 :(得分:0)

如果我正确地解释了这一点,看起来你正试图这样做:

var query = from emp in employeeList
  select emp.FirstName, emp.LastName;

那不行。您需要选择它作为新对象,匿名或某些命名类型:

var query = from emp in employeeList
  select new { emp.FirstName, emp.LastName };
Console.WriteLine(query.First().FirstName);

如果您打算将查询返回给调用函数,则需要使用命名类型,因为匿名类型不能离开它们所在的范围:

return from emp in employeeList
  select new EmployeeData(emp.FirstName, emp.LastName);