亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Linq - 在不影響父行數的情況下過濾子列表<object>

Linq - 在不影響父行數的情況下過濾子列表<object>

C#
米琪卡哇伊 2022-11-22 16:32:54
我有一個場景,我需要過濾包含在父問題中的子list<object> ResponseIssues ,它也是一個. 對于這個例子,我有 10 個問題要從表中撤回,無論是否有 ResponseIssues,我總是需要撤回這些問題。 list<object>我的查詢似乎有幾個問題。第一個問題是問題的數量從10 變為 1,因為我目前只有一個與ResponseIssues相關的問題。我需要所有問題回來。第二個問題是,當我仔細觀察ResponseIssues child時list<object>。當我看到與問題相關的記錄時,它不會按SuveryPeriod和RespondentByQuarterId過濾掉行。我期待一行,我得到三行,其中兩行來自上一時期。Responses 子列表也會出現同樣的問題。下面是我當前的代碼。關于如何在考慮上述問題的情況下重組查詢并返回 Questions 對象而不是匿名對象的任何想法?var question = await _dbContext.Questions                 .Include(x => x.Responses)                 .Include(x => x.ResponseIssues)                 .Include(x => x.SurveySection)                 .Include(x => x.Survey)                 .Where(x => x.SurveyId == surveyId &&                             x.Responses.Any(r => r.SiteUserId == siteUserId &&                                                  r.SurveyPeriodId == surveyPeriodId &&                                                  r.RespondentByQuarterId == 2                                            ) &&                                             x.ResponseIssues.Any(ri => ri.SurveyPeriodId == surveyPeriodId &&                                                                         ri.RespondentByQuarterId == 2                                           ))                 .OrderBy(x => x.Position)                 .ToListAsync();
查看完整描述

1 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

我能夠通過將其分解為三個獨立的查詢而不是一個查詢來完成上述操作。我仍然很想知道社區中是否有人有辦法將其作為一個查詢來完成。


不管怎樣,下面是我的代碼。我能夠使用 Responses 和 ResponseIssues 的正確行數更新 Questions Parent,并返回所有問題。


var question = await _dbContext.Questions

                                .Include(x => x.SurveySection)

                                .Include(x => x.Survey)

                                .Where(x => x.SurveyId == surveyId)

                                .OrderBy(x => x.Position)

                                                  .ToListAsync();


var responses = await _dbContext.Responses

                                .Where(x => x.SiteUserId == siteUserId &&

                                            x.SurveyPeriodId == surveyPeriodId)

                                .ToListAsync();


var responseIssues = await _dbContext.ResponseIssues

                                .Where(x => x.SurveyPeriodId == surveyPeriodId &&

                                            x.SiteUserId == siteUserId)

                                .ToListAsync();



foreach (var item in question)

{

    var foundResponse = responses.Where(x => x.QuestionId == item.Id).ToList();

    var foundResponseIssue = responseIssues.Where(x => x.QuestionId == item.Id).ToList();


    if (foundResponse != null)

    {

        item.Responses = foundResponse;

    }


    if (foundResponseIssue != null)

    {

        item.ResponseIssues = foundResponseIssue;

    }

}


查看完整回答
反對 回復 2022-11-22
  • 1 回答
  • 0 關注
  • 93 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號