我的查询有什么问题

sha*_*mim 0 c# linq linq-to-entities

关于C#vs2008.my贝娄查询的工作向我显示错误.可以告诉我什么是问题以及如何解决这个问题.谢谢提前.

 NorthwindDataContext db = new NorthwindDataContext();
 List<Order> r = (from p in db.Orders
                  select new { p.OrderID, p.OrderDate });
Run Code Online (Sandbox Code Playgroud)

错误信息:

无法将类型'System.Linq.IQueryable'隐式转换为'System.Collections.Generic.List'.存在显式转换(您是否错过了演员?)

Bol*_*ock 7

您正在尝试将查询表达式分配给List<>对象.那是错的.

您需要调用ToList()将查询结果转换为找到的订单列表,并使用匿名类型,因为您只选择部分数据并创建新的匿名对象:

var r = (from p in db.Orders
         select new { p.OrderID, p.OrderDate }).ToList();
Run Code Online (Sandbox Code Playgroud)

请注意,匿名类型仍然是可枚举的,因为它仍然是通用的List<>,因此它仍然实现了通用IEnumerable<>接口.

要形成一个List<Order>,你需要检索完整的对象,所以select p正如John Rasch所说:

List<Order> r = (from p in db.Orders
                 select p).ToList();
Run Code Online (Sandbox Code Playgroud)

或者select new Order从你选择的字段中构建它们.