首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用linq连接3组数据

使用linq连接3组数据
EN

Stack Overflow用户
提问于 2018-11-07 18:45:39
回答 1查看 96关注 0票数 0

我正在使用和.Net Core2.1创建一个web应用程序。

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

下面是我处理数据过滤的方法:

代码语言:javascript
复制
    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):

代码语言:javascript
复制
    select *
    from eventBands eb
    left join eventTickets et ON et.venueID = eb.venueID
    left join eventSponsers es ON es.eventID = et.eventID

有什么方法可以用c#和linq来实现吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-08 06:11:42

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

代码语言:javascript
复制
var result = from eb in eventBands
                      join et in eventTickets on eb.venueID equals et.venueID into bt
                      from x in bt.DefaultIfEmpty()

                      join es in eventSponsers on x.eventID equals es.eventID into st
                      from y in st.DefaultIfEmpty()
                      select new
                      {
                          // Add your assignments
                          //eb = eb.venueID,
                          //et = x.venueID,
                          //es = y.eventID

                      };

更新:

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

代码语言:javascript
复制
 var result = ...
                      select new LinqViewModel
                      {


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

考虑到:

代码语言:javascript
复制
@model IEnumerable<LinqViewModel>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53195852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档