Явное объявление переменной - PullRequest
0 голосов
/ 17 января 2019

У меня есть локальная переменная, неявно определенная как var, и она заполняется объектами, извлеченными из базы данных через структуру сущностей.При наведении курсора на переменную я получаю детали, как показано на рисунке ниже.

enter image description here

Как я могу явно определить свою переменную без использования var, дляпример

IQuerable<{Inpection Ins, Field F}> tempInspInner =  getInspections();

Вместо:

var tempInspInner =  getInspections();

ОБНОВЛЕНИЕ

getInspections () имеет следующий код:

return _dbcontext.Inspection
                .Join(_dbcontext.Field,
                ins => ins.FieldId,
                f => f.FieldId,
                (ins, f) => new { Ins = ins, F = f }).Where(*hidden*);

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Как уже говорили другие, идеальным вариантом будет getInspections() возвращать строго типизированную коллекцию.

В качестве альтернативы вы должны иметь возможность определять переменную с явным типом (используя именованные кортежи ) следующим образом:

IEnumerable<(Inspection Ins, Field F)> test = getInspections()
    .AsEnumerable()
    .Cast<dynamic>()
    .Select(x => (Ins: (Inspection)x.Ins, F: (Field)x.F));

Недостатком этого подхода является то, что, поскольку результаты приводятся к dynamic, компилятор не будет знать, изменятся ли когда-либо используемые свойства источника (x.Ins и x.F). Так что вы не будете знать, что это не сработает, пока не будет выполнено во время выполнения.

0 голосов
/ 17 января 2019

getInspections возвращает анонимный тип (meh sigh ), именованные кортежи не помогут, однако вы можете проецировать его на класс

public class SomeObject 
{
    public Inpection Ins {get;set;}
    public Field F {get;set;}
}

IQueryable<SomeObject> = getInspections.Select(x => new SomeObject { Ins = x.Ins, F = x.F });

Сказав это, вам, вероятно, лучше вернуть строго типизированный IQueryable в любом случае

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...