首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq to SQL基于t1和t2规范返回t1对象

Linq to SQL基于t1和t2规范返回t1对象
EN

Stack Overflow用户
提问于 2015-03-28 03:03:58
回答 2查看 46关注 0票数 0

我希望返回所有t1对象及其相关信息,其中"DeleteFlag“==为假,其中与其关联的t2对象的"DeleteFlag”也为假,T2的"SubmittedFlag“==为真。

我想将这些合并到一个很好的Linq to SQL语句中,而不是我目前正在走的很长的路...

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

有了这个模型,我可能会在第一次数据库拉取时加载很多额外的行,而且我不仅要迭代所有这些额外的记录,还要遍历相关的表单,直到我找到我的主要条件。

在我看来,这在linq语句中似乎是可行的,就像下面这样,但我一次又一次地出错:

代码语言:javascript
复制
var records = context.Records.Where(model => model.DeleteFlag == false)
                             .Include(model => model.Forms
                             .Where(form => form.DeleteFlag == false && form.Submissionflag == true)).toList();

在我写一个SQL存储的proc并调用它之前,你知道如何在一个漂亮的Linq to SQL语句中清理所有这些递归工作吗?

EN

回答 2

Stack Overflow用户

发布于 2015-03-28 03:15:38

就像这样。

代码语言:javascript
复制
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);
票数 2
EN

Stack Overflow用户

发布于 2015-03-28 03:11:42

它应该是有效的:

代码语言:javascript
复制
var returnModel = context.Records
                         .Where(model => !model.DeleteFlag)
                         .SelectMany(model => model.Forms)
                         .Where(form => !form.DeleteFlag && form.Submissionflag)
                         .ToList();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29308343

复制
相关文章

相似问题

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