C# 基于t1和t2标准返回t1对象的Linq到SQL

C# 基于t1和t2标准返回t1对象的Linq到SQL,c#,linq,entity-framework-6,C#,Linq,Entity Framework 6,我想返回所有t1对象及其关联信息,其中其“DeleteFlag”==False,其关联t2对象的“DeleteFlag”也为False,t2的“SubmittedFlag”==true 我想把它们组合成一个很好的LINQtoSQL语句,而不是我目前正在做的 var record = context.Records.Where(model => model.DeleteFlag == false).Include(model => model.Forms).toList();

我想返回所有t1对象及其关联信息,其中其“DeleteFlag”==False,其关联t2对象的“DeleteFlag”也为False,t2的“SubmittedFlag”==true

我想把它们组合成一个很好的LINQtoSQL语句,而不是我目前正在做的

var record = context.Records.Where(model => model.DeleteFlag == false).Include(model => model.Forms).toList();

    List<Records> returnModel = new List<Records>();

    foreach(var r in record)
    {
       foreach(var f in r.Forms)
       {
           if(f.SubmissionFlag == true && f.DeleteFlag == false)
           {
               returnModel.add(f);
           }
       }
    }
在我编写一个SQL存储过程并结束之前,有没有办法在一个漂亮的Linq to SQL语句中清理所有这些递归工作?

应该可以:

var returnModel = context.Records
                         .Where(model => !model.DeleteFlag)
                         .SelectMany(model => model.Forms)
                         .Where(form => !form.DeleteFlag && form.Submissionflag)
                         .ToList();
它应该在以下方面发挥作用:

var returnModel = context.Records
                         .Where(model => !model.DeleteFlag)
                         .SelectMany(model => model.Forms)
                         .Where(form => !form.DeleteFlag && form.Submissionflag)
                         .ToList();
它应该在以下方面发挥作用:

var returnModel = context.Records
                         .Where(model => !model.DeleteFlag)
                         .SelectMany(model => model.Forms)
                         .Where(form => !form.DeleteFlag && form.Submissionflag)
                         .ToList();
它应该在以下方面发挥作用:

var returnModel = context.Records
                         .Where(model => !model.DeleteFlag)
                         .SelectMany(model => model.Forms)
                         .Where(form => !form.DeleteFlag && form.Submissionflag)
                         .ToList();
像这样

var records = from record in context.Records
              where !record.DeleteFlag
              from form in record.Forms
              where !form.DeleteFlag && form.Submissionflag
              select form;

return new List<Record>(records);
var records=来自上下文中的记录。记录
哪里record.DeleteFlag
从记录中的表格。表格
哪里form.DeleteFlag&&form.Submissionflag
选择表格;
返回新列表(记录);
像这样

var records = from record in context.Records
              where !record.DeleteFlag
              from form in record.Forms
              where !form.DeleteFlag && form.Submissionflag
              select form;

return new List<Record>(records);
var records=来自上下文中的记录。记录
哪里record.DeleteFlag
从记录中的表格。表格
哪里form.DeleteFlag&&form.Submissionflag
选择表格;
返回新列表(记录);
像这样

var records = from record in context.Records
              where !record.DeleteFlag
              from form in record.Forms
              where !form.DeleteFlag && form.Submissionflag
              select form;

return new List<Record>(records);
var records=来自上下文中的记录。记录
哪里record.DeleteFlag
从记录中的表格。表格
哪里form.DeleteFlag&&form.Submissionflag
选择表格;
返回新列表(记录);
像这样

var records = from record in context.Records
              where !record.DeleteFlag
              from form in record.Forms
              where !form.DeleteFlag && form.Submissionflag
              select form;

return new List<Record>(records);
var records=来自上下文中的记录。记录
哪里record.DeleteFlag
从记录中的表格。表格
哪里form.DeleteFlag&&form.Submissionflag
选择表格;
返回新列表(记录);


你到底犯了什么错误?你到底犯了什么错误?你到底犯了什么错误?你应该选择record,而不是Form,但OP实际上是在将
表单添加到
列表中
我也这么认为,但问题将f添加到要返回的列表中。我们不知道它也不是typeof(Record)。实际上,在Ocatviocci发布下面的代码之前,我提出了一个解决方案:
var Record=db.Record.Include(model=>model.Forms)。其中(model=>model.DeleteFlag==flase&&model.Forms.Any(form=>form.DeleteFlag==false&&form.SubmissionFlag==true)).OrderByDescending(model=>model.RecordID).ToList()
您应该选择record,而不是Form,但是OP实际上正在将
Form
添加到
列表中
我也这么认为,但是问题将f添加到要返回的列表中。我们不知道它也不是typeof(Record)。实际上,在Ocatviocci发布下面的代码之前,我提出了一个解决方案:
var Record=db.Record.Include(model=>model.Forms)。其中(model=>model.DeleteFlag==flase&&model.Forms.Any(form=>form.DeleteFlag==false&&form.SubmissionFlag==true)).OrderByDescending(model=>model.RecordID).ToList()
您应该选择record,而不是Form,但是OP实际上正在将
Form
添加到
列表中
我也这么认为,但是问题将f添加到要返回的列表中。我们不知道它也不是typeof(Record)。实际上,在Ocatviocci发布下面的代码之前,我提出了一个解决方案:
var Record=db.Record.Include(model=>model.Forms)。其中(model=>model.DeleteFlag==flase&&model.Forms.Any(form=>form.DeleteFlag==false&&form.SubmissionFlag==true)).OrderByDescending(model=>model.RecordID).ToList()
您应该选择record,而不是Form,但是OP实际上正在将
Form
添加到
列表中
我也这么认为,但是问题将f添加到要返回的列表中。我们不知道它也不是typeof(Record)。实际上,在Ocatviocci发布下面的代码之前,我提出了一个解决方案:
var Record=db.Record.Include(model=>model.Forms)。其中(model=>model.DeleteFlag==flase&&model.Forms.Any(form=>form.DeleteFlag==false&&form.SubmissionFlag==true)).OrderByDescending(model=>model.RecordID).ToList()