使用linq联接3组数据

时间:2018-11-07 18:45:40

标签: c# entity-framework linq asp.net-core

我正在使用Microsoft Entity Framework和.Net Core 2.1创建Web应用程序。

在我的一个控制器中,我试图合并3组不同的数据。

这是我处理数据过滤的方式:

    var eventSponsers = await _context.Sponsers
                    .Where(s => s.catalogId != null).ToListAsync();

    var eventBands = await _context.Bands
        .Where(b => b.typeId == 3).ToListAsync();

    var eventTickets = await _context.Tickets
        .Where(t => t.dateTimeStart >= startDate && t.dateTimeStart <= endDate).ToListAsync();

现在,我需要执行以下操作(tsql):

    select *
    from eventBands eb
    left join eventTickets et ON et.venueID = eb.venueID
    left join eventSponsers es ON es.eventID = et.eventID

有没有办法用c#和linq做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:2)

尝试使用下面的linq连接三组数据:

 var result = ...
                      select new LinqViewModel
                      {


                      };
 return View(result.ToList());

更新:

要将结果返回到视图,请尝试使用ViewModel。

@model IEnumerable<LinqViewModel>

在视图中:

try (ClientSession clientSession = client.startSession()) {
    clientSession.startTransaction();
    result = collection.find(clientSession, keyOfDoc);
    if (result blah blah blah) {
        // Change the doc
        collection.insertOne(clientSession, doc);
    }
    clientSession.commitTransaction();
}