我是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?
}
我做错了吗?鉴于我有对象,如何查询我的收藏/实体?
谢谢!
答案 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);