Использование анонимных типов - одна переменная выбирает два разных запроса - PullRequest
1 голос
/ 11 июля 2011

Я хочу, чтобы переменная выполняла один из двух запросов, но есть две разные таблицы, и у меня есть ошибка "Тип условного выражения не может быть определен, поскольку не существует неявного преобразования между System.Linq.IQueryable<WGamesTicket> и System.Linq.IQueryable<AllGamesTicket>

           var dsakj = (type == "mix") ?
                (from el in objDC.WGamesTickets
                 where el.ticket.time == DTtemp
                     //&& el.typeOfGame == "mix"
                 select el)
                 :
                 (from el in objDC.AllGamesTickets
                  where el.ticket.time == DTtemp
                  //&& el.typeOfGame == "eng"
                  select el);

Ответы [ 2 ]

3 голосов
/ 11 июля 2011

Вам придется привести в новый пользовательский класс. Например, вы извлекаете данные из двух разных таблиц, но, возможно, вы хотите получить идентификатор и имя каждой из них. Поэтому измените свой код на:

var dsakj = (type == "mix") ?
            (from el in objDC.WGamesTickets
             where el.ticket.time == DTtemp
                 //&& el.typeOfGame == "mix"
             select new myCustomObject()
             {
                 id = el.id,
                 name = el.name,
             })
             :
             (from el in objDC.AllGamesTickets
              where el.ticket.time == DTtemp
              //&& el.typeOfGame == "eng"
             select new myCustomObject()
             {
                 id = el.id,
                 name = el.name,
             });
3 голосов
/ 11 июля 2011

результат ваших запросов другого типа, ваш первый IQueryable<WGamesTickets>, второй IQueryable<AllGamesTickets>.По этой причине тип переменной "var" dsakj не может быть определен.

Вы можете оба проецировать на общий тип класса:

 var dsakj = (type == "mix") ?
                (from el in objDC.WGamesTickets
                 where el.ticket.time == DTtemp
                     //&& el.typeOfGame == "mix"
                 select new GameTicket() { Type = el.typeOfGame} )
                 :
                 (from el in objDC.AllGamesTickets
                  where el.ticket.time == DTtemp
                  //&& el.typeOfGame == "eng"
                  select new GameTicket() { Type = el.typeOfGame} ));

Это будет иметь недостаток, хотяВы должны «вручную» скопировать свойства в новый экземпляр класса GameTicket.

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