实体框架 - 如何从两个数据库类到另一个类中选择属性

时间:2014-10-13 13:54:51

标签: entity-framework lambda

我创建了一个新的notMapped类“BuyingHistory”,它有两个数据库表的属性(不是全部)

如何用实体填充此类?我提出了条件,但如何选择列表中的属性? (我知道怎么做一个属性而不是列表)

         IQueryable<BuyingHistory> _buyingList = 
        _db.Orders
        .Join(_db.EventPages
        ,o => o.EventID
        ,e => e.ID
        ,(o, e) => new { orders = o, events = e })
        .Where(o => o.orders.UserID == LS.CurrentUser.ID)
        .Select( // I don't know how to continue

它以这种方式工作,但我怎么能在一个命令中像上面的例子那样做

 var _List =
        _db.Orders
        .Join(_db.EventPages
        , o => o.EventID
        , e => e.ID
        , (o, e) => new { orders = o, events = e })
        .Where(o => o.orders.UserID == LS.CurrentUser.ID).ToList();

List<BuyingHistory> _buyingList = new List<BuyingHistory>();
 foreach (var item in _List)
{
    _buyingList.Add(new BuyingHistory()
    {
        CreatedDate = item.orders.CreatedDate,
        EventName = item.events.Title,
        NumberOfTickets = item.orders.TicketNumber,
        OrderID = item.orders.ID,
        Status = item.orders.Status.ToString(),
        Total = item.orders.TicketNumber
    });
}

1 个答案:

答案 0 :(得分:1)

我开始使用查询语法,然后像这样执行查询:

from ord in _db.Orders
join evt in _db.EventPages on ord.EventID equals evt.ID
where ord.UserID == LS.CurrentUser.ID
select new BuyingHistory
{
    CreatedDate = ord.CreatedDate,
    EventName = evt.Title,
    NumberOfTickets = ord.TicketNumber,
    OrderID = ord.ID,
    Status = ord.Status.ToString(),
    Total = ord.TicketNumber
})

如果你有EF版本6,ToString()不会抛出异常。如果没有,则必须将BuyingHistory.Status的类型更改为来自数据库的类型。