Linq返回类型转换

时间:2015-01-12 12:56:26

标签: c# linq

我有一个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<对象> 然后在迭代时我无法访问 rec.ByScanner,rec.ByExam ,因为对象不包含它们。 如何解决这个问题?

编辑: 我尝试创建一个新类并填充它们。但是,按扫描程序分组属性。密钥,byScanner。 ToList()无法访问。如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

您正在使用Anonymous Type。这些不应该传递给方法。

您可以做的一件事是创建(让我们称之为&#39;记录&#39;)具有属性BodyRegionByScannerByExam并通过的类IEnumerable<Record>