如何使用LINQ查询返回IEnumerable <object>

时间:2019-10-04 01:24:20

标签: linq asp.net-core entity-framework-core

当我使用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;
 }

1 个答案:

答案 0 :(得分:1)

发生该错误是因为匿名类型(即您使用select new {...}构造创建的事物)无法转换为命名类型。

您可以改用以下代码:

var query = (IEnumerable<Employee>)from cust in
            db.Employees
            select new Employee { Id = cust.Id, Name = cust.Name };
相关问题