2015-01-12 8 views
0

У меня есть запрос 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 < Object> то при переборе я не могу получить доступ к rec.ByScanner, rec.ByExam потому Объект не содержит их. Как решить эту проблему?

EDIT: Я пробовал создавать новый класс и заполнять его. Но группировка атрибутов byScanner. Ключ, byScanner. ToList() недоступны. Как это можно решить?

+7

Создайте класс и заполните его вместо того, чтобы получать «анонимный тип». –

+0

Пожалуйста, см. Часть EDIT, я попытался сделать ваше решение. Тогда я в конечном итоге с выше проблемы. –

ответ

5

Вы используете Anonymous Type. Они не должны передаваться методам.

Одна вещь, которую вы можете сделать, это создать (Давайте назовем его «Record») класс со свойствами BodyRegion, ByScanner и ByExam и проходят IEnumerable<Record>.

+0

Пожалуйста, см. Часть EDIT, я попытался сделать ваше решение. Тогда я в конечном итоге с выше проблемы. –

+0

Каким должен быть тип свойств BodyRegion, ByScanner и ByExam? –

+0

ByScanner - явно коллекция чего-то. Вы не знаете? Кроме того, прежде чем продолжить. Имеет ли этот класс записей фактическое значение (является ли запись фактической вещью с этими свойствами), или это так, как вы выбрали данные с помощью linq, чтобы заставить код работать? –

Смежные вопросы