尝试从LINQ查询返回两个连接表的IEnumerable

时间:2016-02-17 10:27:29

标签: asp.net linq api

这开始在我的头脑中......

我的数据库中有两个表:

门票

public string id { get; set; }
public int assigned_to { get; set; }
...
public virtual Users Users { get; set; }

用户

public int id { get; set; }
public string email { get; set; }
...
public virtual Tickets Tickets { get; set; }

我正在尝试将这些表连接在一起以返回票证表的IEnumerable<>,其中每张票证都有相应的用户。这两个表由Tickets.assigned_to = Users.id

连接

到目前为止,我已经尝试了两种方法:

var query = from t in _context.Tickets
            join u in _context.Users on t.assigned_to equals u.id
            select (new {t, u});

return query.ToList();

IEnumerable<Tickets> query = from t in _context.Tickets
                             join u in _context.Users on t.assigned_to equals u.id
                             select (new {t, u});

return query.ToList();

但两个都给我错误: Cannot implicitly convert type 'System.Linq.IQueryable<<anonymous type: DataWire.Models.Tickets t, DataWire.Models.Users u>>' to 'System.Collections.Generic.IEnumerable<DataWire.Models.Tickets>'. An explicit conversion exists (are you missing a cast?)

注意:这是针对ASP.NET Web API的,我试图从我的存储库返回一个Tickets列表。

1 个答案:

答案 0 :(得分:0)

不要返回一个新的{t,u},因为这是一个包含Tickets和User的匿名类型 - 而不是只有Ticket的IEnumerable。你想要:

IEnumerable<Tickets> query = from t in _context.Tickets
                         join u in _context.Users on t.assigned_to equals u.id
                         select (t);

return query.ToList();