Как вернуть IEnumerable <object>с помощью LINQ Query - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь вернуть IEnumerable, когда использую выражение LINQ Query, но оно выдает ошибку. Однако, если я использую лямбда-выражение, оно прекрасно работает. Я не понимаю, почему LINQ Query не работает.

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 Ответ

1 голос
/ 04 октября 2019

Эта ошибка возникает из-за того, что анонимный тип (то есть то, что вы создаете с помощью конструкции select new {...}) не может быть приведен к именованному типу.

Вместо этого вы можете использовать следующие коды:

var query = (IEnumerable<Employee>)from cust in
            db.Employees
            select new Employee { Id = cust.Id, Name = cust.Name };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...