无法隐式转换类型';System.Collections.Generic.List<;匿名类型#1>
本文关键字:类型 lt List gt Generic System 转换 Collections | 更新日期: 2023-09-27 18:24:34
我是LINQ的新手我收到这个错误
无法隐式转换类型
System.Collections.Generic.List<AnonymousType#1>
至System.Collections.Generic.List<DirCert.Data.Model.DssClient_Sasid_Certified>
我不知道如何解决这个错误。
这是我的代码:
public List<DssClient_Sasid_Certified> GetCertifiedRecordsbySasid(string Sasid)
{
return (from o in _context.DssClient_Sasid_Certified
where (o.SasId == Sasid)
join t in _context.DssClients on o.ClientId equals t.ClientId
select new
{
ClientId = o.ClientId,
SasId = o.SasId,
FormalLastName = o.FormalLastName,
FormalFirstName = o.FormalFirstName,
FormalMiddleName = o.FormalMiddleName,
BenefitSource = t.BenefitSource,
DOB = o.DOB
}).ToList();
}
您的select子句:
select new
{
...
}
正在选择匿名类型。您需要它来选择一个DssClient_Sasid_Certified
,这样您就可以返回方法声明所说的要返回的类型。您可能只需要将代码更改为:
select new DssClient_Sasid_Certified
{
...
}
当然,假设DssClient_Sasid_Certified
具有您正在设置的所有属性。
您的方法应该返回DssClient_Sasid_Certified的列表,但您的linq查询正在创建一个anon类型。
你可以做一些类似的事情:
public List<DssClient_Sasid_Certified> GetCertifiedRecordsbySasid(string Sasid)
{
return (from o in _context.DssClient_Sasid_Certified
where (o.SasId == Sasid)
join t in _context.DssClients
on o.ClientId equals t.ClientId
select new DssClient_Sasid_Certified()
{
ClientId = o.ClientId,
SasId = o.SasId,
FormalLastName = o.FormalLastName,
FormalFirstName = o.FormalFirstName,
FormalMiddleName = o.FormalMiddleName,
BenefitSource = t.BenefitSource,
DOB = o.DOB
}).ToList();
}
当然,这是假设您的对象具有DssClient_Sasid_Certified的无参数构造函数,并且您在anon对象中使用的属性与DssClient_Sasid_Certificationd 相同
原始查询中的行:
select new .....
基本上说,给我创建一个新的匿名类型,匿名类型无法自动转换为非匿名类型(DssClient_Sasid_Certified列表)。
在此处阅读有关匿名类型的更多信息:http://msdn.microsoft.com/en-us/library/bb397696.aspx
错误消息清楚地说明了这一点。您的返回类型是List<DssClient_Sasid_Certified>
,但您正试图返回匿名类型列表。因此,与不匹配的类型是不兼容的。您需要创建您类型的实例,而不是匿名类型:
select new DssClient_Sasid_Certified { .. }