Linq 返回类型转换

本文关键字:类型转换 返回 Linq | 更新日期: 2023-09-27 18:37:08

我有一个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查询(第一个代码片段)移动到一个函数中,函数的返回类型应该是什么?函数的返回类型不能是变量。如果我给 IEnumerable,那么在迭代时我无法访问 rec。ByScanner, rec.ByExam,因为对象不包含它们。如何解决此问题?

编辑:我尝试创建一个新类并填充它们。但按扫描仪对属性进行分组。密钥,由扫描仪。ToList() 不可访问。如何解决这个问题?

Linq 返回类型转换

正在使用匿名类型。这些不应传递方法。

您可以做的一件事是创建一个(我们称之为"记录")具有属性的类 BodyRegionByScannerByExam 并传递IEnumerable<Record>