簡體   English   中英

Linq返回類型轉換

[英]Linq return type conversion

我有一個linq查詢,如下所示:

    var result =
                    from Record in DBContext.GetAll().
                    group new { Record.Filed1, Record.Field2} by Record.Field3
                        into newGroup
                        select new
                        {
                            BodyRegion = newGroup.Key,
                            ByScanner =
                                from exam in newGroup
                                group exam.MaxValue by exam.Model
                                    into myGroup
                                    select myGroup,

                            ByExam =
                                from exam in newGroup
                                group exam.MaxValue by exam.Protocol
                                    into myGroup2
                                    select myGroup2
};

然后我遍歷他們,

 foreach (var rec in result)
            { 
                foreach (var byScanner in rec.ByScanner)
                  {
                     ProcessResult(byScanner.Key, byScanner.ToList());
                  }
                foreach (var byExam in rec.ByExam )
                  {
                     ProcessResult(byExam.Key, byExam.ToList());
                  }
            }

一切正常。 但是我想將Linq查詢(第一個代碼段)移到一個函數中,該函數的返回類型應該是什么? 函數的返回類型不能為var 如果我給IEnumerable <Object>,則在迭代時無法訪問rec.ByScanner,rec.ByExam,因為Object不包含它們。 如何解決這個問題?

編輯:我嘗試通過創建一個新類並在其中填充它們。 但是通過Scanner對屬性進行分組。 密鑰 ,byScanner。 ToList()無法訪問。 如何解決?

您正在使用匿名類型 這些不應在方法周圍傳遞。

您可以做的一件事是創建一個具有屬性BodyRegionByScannerByExam的類(我們稱之為“ Record”),並傳遞IEnumerable<Record>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM