在Linq加入查询

时间:2014-04-21 10:15:57

标签: sql linq linq-to-sql linq-to-entities

我有2张桌子。 ProductOrderMember

ProductOrder: OrderId, MemberId, DateTimeUTC.
Member : MemberId, FName, LName.

我想返回一个列表,其中包含订单ID,Fname,LName,DateTime UTC。

 public List<ProductOrder> GetOrderDetails()
        {
            using (var db = new StoreEntities())
            {
                             var query = (from pd in db.ProductOrder
                             join od in db.Member on pd.MemberId equals od.MemberId
                             orderby od.MemberId
                             select new
                             {
                                 pd.OrderId,
                                 od.FName,
                                 od.LName,
                                 pd.DateTimeUTC,
                             }).ToList();
                return query;
            }

        }

但是这里发生了一些错误。 enter image description here

请帮忙。

1 个答案:

答案 0 :(得分:1)

您的查询返回anonymous type个实例的集合。它不应该作为方法返回。

  

您不能将字段,属性,事件或方法的返回类型声明为具有匿名类型

     来自Anonymous Types (C# Programming Guide)

相反,您必须创建新类来存储结果:

public class OrderInfo
{
    public int OrderId { get; set; }
    public string FName { get; set; }
    public string LName { get; set; }
    public DateTimeUTC { get; set; }
}

更改方法声明以返回OrderInfo的集合:

public List<OrderInfo> GetOrderDetails()

并修改查询以返回这些对象的集合:

var query = (from pd in db.ProductOrder
             join od in db.Member on pd.MemberId equals od.MemberId
             orderby od.MemberId
             select new OrderInfo
             {
                 pd.OrderId,
                 od.FName,
                 od.LName,
                 pd.DateTimeUTC,
             }).ToList();