Linq to sql Linq到Sql问题
无法强制转换类型为的对象时将出现错误Linq to sql Linq到Sql问题,linq-to-sql,Linq To Sql,无法强制转换类型为的对象时将出现错误 公共类CusInfomration { 公共字符串CustomerName{get;set;} 公共字符串CustomerID{get;set;} 公共字符串OrderDate{get;set;} 公共字符串OrderId{get;set;} } var CustomerFromWash=来自_NorthWindDataContext.Customers中的p 在NorthWindDataContext.Orders中加入q p.CustomerID等于q.
公共类CusInfomration
{
公共字符串CustomerName{get;set;}
公共字符串CustomerID{get;set;}
公共字符串OrderDate{get;set;}
公共字符串OrderId{get;set;}
}
var CustomerFromWash=来自_NorthWindDataContext.Customers中的p
在NorthWindDataContext.Orders中加入q
p.CustomerID等于q.CustomerID
其中p.Region==“WA”
选择新的
{
CustomerName=Convert.ToString(p.CompanyName),
CustomerID=Convert.ToString(p.CustomerID),
OrderId=Convert.ToString(q.OrderId),
OrderDate=Convert.ToString(q.OrderDate),
};
List lstCust=(List)CustomerFromWash;
LINQ查询返回一个IQueryable
IQueryable
是一个接口,List
没有实现它,因此底层的具体实现不可能是一个List
(但是它实现了IEnumerable
,因此对它的转换是有效的)。即使是这样,这也不是一个安全的转换,因为.NET用户可能希望有一天改变底层实现,而您的转换将被破坏。这不是一个好主意,即使它一开始确实有效
您可以对LINQ查询的返回值调用ToList()
:
var CustomerFromWash = (from p in _NorthWindDataContext.Customers
join q in _NorthWindDataContext.Orders
on p.CustomerID equals q.CustomerID
where p.Region == "WA"
select new
{
CustomerName =Convert.ToString(p.CompanyName),
CustomerID = Convert.ToString(p.CustomerID),
OrderId = Convert.ToString(q.OrderID),
OrderDate = Convert.ToString(q.OrderDate),
}).ToList();
即使您选择的是匿名类型的集合,而不是CustInformation
对象。如果希望返回CustInformation
对象,则需要:
select new CustInformation
{
// set properties here
}
该LINQ查询返回一个
IQueryable
IQueryable
是一个接口,List
没有实现它,因此底层的具体实现不可能是一个List
(但是它实现了IEnumerable
,因此对它的转换是有效的)。即使是这样,这也不是一个安全的转换,因为.NET用户可能希望有一天改变底层实现,而您的转换将被破坏。这不是一个好主意,即使它一开始确实有效
您可以对LINQ查询的返回值调用ToList()
:
var CustomerFromWash = (from p in _NorthWindDataContext.Customers
join q in _NorthWindDataContext.Orders
on p.CustomerID equals q.CustomerID
where p.Region == "WA"
select new
{
CustomerName =Convert.ToString(p.CompanyName),
CustomerID = Convert.ToString(p.CustomerID),
OrderId = Convert.ToString(q.OrderID),
OrderDate = Convert.ToString(q.OrderDate),
}).ToList();
即使您选择的是匿名类型的集合,而不是CustInformation
对象。如果希望返回CustInformation
对象,则需要:
select new CustInformation
{
// set properties here
}