C# 使用匿名类型-一个变量选择两个不同的查询

C# 使用匿名类型-一个变量选择两个不同的查询,c#,linq-to-sql,C#,Linq To Sql,我想从两个查询中选择一个变量,但有两个不同的表,并且我发现无法确定条件表达式的错误类型,因为System.Linq.IQueryable和System.Linq.IQueryable之间没有隐式转换 查询的结果是另一种类型,第一种是IQueryable,第二种是IQueryable。因此,无法确定var变量dsakj的类型 您可以将两个项目都投影到一个公共类类型: var dsakj = (type == "mix") ? (from el in objDC.W

我想从两个查询中选择一个变量,但有两个不同的表,并且我发现无法确定条件表达式的错误类型,因为System.Linq.IQueryable和System.Linq.IQueryable之间没有隐式转换


查询的结果是另一种类型,第一种是IQueryable,第二种是IQueryable。因此,无法确定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类实例中。

您的查询结果属于不同的类型,第一个是IQueryable,第二个是IQueryable。因此,无法确定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类实例中。

您必须强制转换到新的自定义类。例如,您从两个不同的表中提取数据,但可能希望从每个表中收集id和名称。因此,请将代码更改为:

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,
             });

您必须强制转换到新的自定义类。例如,您从两个不同的表中提取数据,但可能希望从每个表中收集id和名称。因此,请将代码更改为:

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,
             });

此问题中没有异常类型。您是对的,隐式类型的局部变量。此问题中没有异常类型。您是对的,隐式类型的局部变量。