我正在使用和.Net Core2.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来实现吗?
谢谢!
发布于 2018-11-08 06:11:42
尝试使用下面的linq连接三组数据:
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。
var result = ...
select new LinqViewModel
{
};
return View(result.ToList());考虑到:
@model IEnumerable<LinqViewModel>https://stackoverflow.com/questions/53195852
复制相似问题