Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何返回IEnumerable<;对象>;使用LINQ查询_Linq_Asp.net Core_Entity Framework Core - Fatal编程技术网

如何返回IEnumerable<;对象>;使用LINQ查询

如何返回IEnumerable<;对象>;使用LINQ查询,linq,asp.net-core,entity-framework-core,Linq,Asp.net Core,Entity Framework Core,当我使用LINQ查询表达式时,我试图返回IEnumerable,但它抛出了一个错误。但是,如果我使用lambda表达式,它工作得非常好。我不明白为什么LINQ查询不起作用 public class Customer { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int CustomerID { get; set; } public s

当我使用LINQ查询表达式时,我试图返回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;
 }
公共类客户
{
[关键]
[数据库生成(DatabaseGeneratedOption.Identity)]
public int CustomerID{get;set;}
公共字符串CustomerName{get;set;}
公共字符串CustomerAddress{get;set;}
公共字符串CustomerPhoneNumber{get;set;}
}
公共IEnumerableGetAllCusterNames()
{
var查询=(IEnumerable)来自中的cust
mycontext.Customers
选择新建{cust.CustomerID,cust.CustomerName};
//lambda表达式工作得非常好
//var query=mycontext.Customers.Select(p=>newcustomer
//{
//CustomerID=p.CustomerID,
//CustomerName=p.CustomerName
//});
返回查询;
}

发生该错误是因为匿名类型(即您使用
选择新{…}
构造创建的对象)无法强制转换为命名类型

您可以改为使用以下代码:

var query = (IEnumerable<Employee>)from cust in
            db.Employees
            select new Employee { Id = cust.Id, Name = cust.Name };
var query=(IEnumerable)来自中的cust
db.雇员
选择新员工{Id=cust.Id,Name=cust.Name};