C# 使用Ef core 3.1从数据库获取相关数据

C# 使用Ef core 3.1从数据库获取相关数据,c#,entity-framework,.net-core,linq-to-sql,ef-core-3.1,C#,Entity Framework,.net Core,Linq To Sql,Ef Core 3.1,我试图从2个相关表中查询数据,但是(EfCore 3.1中没有groupJoin)结果为空,因为相关表中没有项目。 Im使用mvc core 3.1和EF core 3。 代码 var-vmq= 来自_context.Set()中的请求 .Where(sd=>sd.SiteUserId==\u userManager.GetUserId(用户)和&sd.quetaclose==false) .OrderBy(d=>d.ApplicationDate)。然后by(c=>c.Category.Cat

我试图从2个相关表中查询数据,但是(EfCore 3.1中没有groupJoin)结果为空,因为相关表中没有项目。 Im使用mvc core 3.1和EF core 3。 代码

var-vmq=
来自_context.Set()中的请求
.Where(sd=>sd.SiteUserId==\u userManager.GetUserId(用户)和&sd.quetaclose==false)
.OrderBy(d=>d.ApplicationDate)。然后by(c=>c.Category.CatName)///结果应该是=1,可能很多
来自_context.Set()中的提供,其中(id=>id.QuettaOfferId==req.id)
.OrderBy(p=>p.OfferPrice)//结果应该是0,也可以是多个
选择新{req,offers,};
//当结果应为==1 req,0提供时,结果为空
var combinVm=vmq.Select(t=>new ReqOferQestionAnswerVm//ReqOferQestionAnswerVm==仅来自2个表的参数
{
ReqText=t.req.ReqText,
//婴儿车。。
}).ToList();
返回视图(vm);
我不明白如果2表的结果为0,那么孔查询为0

我的课看起来像

 public class QuettaReq
{
    public QuettaReq()
    {
        QuettaOffer = new List<QuettaOffer>();
    }

    [Key] public int Id { get; set; }

    //Pram
    public virtual List<QuettaOffer> QuettaOffer { get; set; }
}

public class QuettaOffer
{
    public QuettaOffer()
    {
    }

    [Key] public   int       QuettaOfferId { get; set; }
    public virtual QuettaReq QuettaReq     { get; set; }
    public         int       QuettaReqId   { get; set; }
}
quetareq公共类
{
公共礼仪(
{
QuettaOffer=新列表();
}
[Key]public int Id{get;set;}
//婴儿车
公共虚拟列表QuettaOffer{get;set;}
}
公营客栈
{
公共服务
{
}
[Key]public int QuettaOfferId{get;set;}
公共虚拟QuettaReq QuettaReq{get;set;}
公共int-quetareqid{get;set;}
}

事实上,您使用了
内部联接
而不是
左联接

更改为:

var vmq =
   from req in  _context.Set<QuettaReq>()
           .Where(sd => sd.SiteUserId == _userManager.GetUserId(User) && sd.QuettaClose == false)
            .OrderBy(d => d.ApplicationDate).ThenBy(c => c.Category.CatName)  ///Results should be =1 could be many

   join offers in _context.Set<QuettaOffer>().OrderBy(p => p.OfferPrice)
      on req.Id equals offers.QuettaReqId into Joff
   from offers in Joff.DefaultIfEmpty()


   select new {  req,offers,};
var-vmq=
来自_context.Set()中的请求
.Where(sd=>sd.SiteUserId==\u userManager.GetUserId(用户)和&sd.quetaclose==false)
.OrderBy(d=>d.ApplicationDate)。然后by(c=>c.Category.CatName)///结果应该是=1,可能很多
在_context.Set().OrderBy(p=>p.OfferPrice)中加入报价
on req.Id等于offers.QUOTAREQID到Joff
来自Joff.DefaultIfEmpty()中的提供
选择新{req,offers,};
var vmq =
   from req in  _context.Set<QuettaReq>()
           .Where(sd => sd.SiteUserId == _userManager.GetUserId(User) && sd.QuettaClose == false)
            .OrderBy(d => d.ApplicationDate).ThenBy(c => c.Category.CatName)  ///Results should be =1 could be many

   join offers in _context.Set<QuettaOffer>().OrderBy(p => p.OfferPrice)
      on req.Id equals offers.QuettaReqId into Joff
   from offers in Joff.DefaultIfEmpty()


   select new {  req,offers,};