какой тип объявить переменную из LINQ - PullRequest
0 голосов
/ 21 декабря 2018

Я не знаю, какая переменная получится из LINQ.Я хочу создать переменную пустую для результата LINQ.давайте рассмотрим пример для подробностей

int Id = 1;
IEnumerable<object> permission = null;
if(Id != 0) {
    permission = from x in db.foo
                 join y in db.bar
                 on x.Id equal y.fkBar
                 select new {
                     Id = x.Id,
                     Name = y.Name }
    permission = permission.where(a => a.Name = "xxxx")
} else {
    permission = from x in db.foo
                 select new {
                     Id = x.Id,
                     Name = "" }
    permission = permission.where(a => a.Name = "yyyyy")
}
return permission;

Ошибка в where clause «объект» не содержит определения «Имя», и никакой доступный метод расширения «Имя», принимающий первый аргумент типа «объект», не может бытьнайдены

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Вместо объявления с помощью var permission используйте dynamic permission = null, и оно будет работать

0 голосов
/ 21 декабря 2018

Я бы создал класс с Id и Name в качестве свойств, permission затем стал бы IEnumerable<YourClassName>.

int Id = 1;
IEnumerable<YourClassName> permission = null;
if(Id != 0) {
    permission = from x in db.foo
        join y in db.bar
        on x.Id equal y.fkBar
        select new YourClassName {
            Id = x.Id,
            Name = y.Name }
} else {
    permission = from x in db.foo
        select new YourClassName {
            Id = x.Id,
            Name = "" }
}

return permission;

ИМО, классы - путь в этом типеситуации и гораздо безопаснее, чем просто использование dynamic или object типов.

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