当我使用LINQ Query表达式时,我试图返回IEnumerable,但它会引发错误。但是,如果我使用lambda表达式,则效果很好。我对LINQ查询为什么不起作用感到困惑。
public class Customer
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CustomerID { get; set; }
public string CustomerName { get; set;}
public string CustomerAddress { get; set; }
public string CustomerPhoneNumber { get; set; }
}
public IEnumerable<Customer>GetAllCusterNames()
{
var query = (IEnumerable<Customer>)from cust in
mycontext.Customers
select new { cust.CustomerID, cust.CustomerName };
// lambda expression works perfectly fine
//var query = mycontext.Customers.Select(p => new Customer
//{
// CustomerID = p.CustomerID,
// CustomerName = p.CustomerName
//});
return query;
}
答案 0 :(得分:1)
发生该错误是因为匿名类型(即您使用select new {...}
构造创建的事物)无法转换为命名类型。
您可以改用以下代码:
var query = (IEnumerable<Employee>)from cust in
db.Employees
select new Employee { Id = cust.Id, Name = cust.Name };