C# 无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic.List”
我是LINQ的新手 我得到了这个错误 无法隐式转换类型 System.Collections.Generic.List到 System.Collections.Generic.List 我想不出如何解决这个错误 这是我的密码:C# 无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic.List”,c#,linq,C#,Linq,我是LINQ的新手 我得到了这个错误 无法隐式转换类型 System.Collections.Generic.List到 System.Collections.Generic.List 我想不出如何解决这个错误 这是我的密码: public List<DssClient_Sasid_Certified> GetCertifiedRecordsbySasid(string Sasid) { return (from o in _context.DssClient_Sasid_C
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();
}
您的方法应该返回DssClient\u Sasid\u 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_认证列表
在此处阅读有关匿名类型的更多信息:
您的方法应该返回DssClient\u Sasid\u 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_认证列表
在此处阅读有关匿名类型的更多信息:
您的select子句:
select new
{
...
}
正在选择匿名类型。您需要它来选择一个DssClient\u Sasid\u Certified,这样您就可以返回方法声明中声明要返回的类型。您可能只需要将代码更改为:
select new DssClient_Sasid_Certified
{
...
}
。。。当然,假设DssClient\u Sasid\u Certified拥有您正在设置的所有属性。您的select子句:
select new
{
...
}
正在选择匿名类型。您需要它来选择一个DssClient\u Sasid\u Certified,这样您就可以返回方法声明中声明要返回的类型。您可能只需要将代码更改为:
select new DssClient_Sasid_Certified
{
...
}
。。。当然,假设DssClient\u Sasid\u Certified拥有您正在设置的所有属性。错误消息清楚地说明了这一点。您的返回类型是List,但您正在尝试返回匿名类型的列表。因此,这些类型不匹配,它们不兼容。您需要创建类型的实例,而不是匿名类型:
select new DssClient_Sasid_Certified { .. }
错误消息清楚地说明了这一点。您的返回类型是List,但您正在尝试返回匿名类型的列表。因此,这些类型不匹配,它们不兼容。您需要创建类型的实例,而不是匿名类型:
select new DssClient_Sasid_Certified { .. }
您正在尝试从方法返回匿名类型的列表吗?据我所知,这是禁止的。不要从方法返回匿名类型,而是从具体类型返回。因此,在这种情况下,创建一个类DssClient并返回一个列表或IEnumerable是有意义的。您返回的列表中T是编译器为您的选择生成的匿名类型,虽然您的方法需要一个列表,但您必须使用具体类型或从方法返回列表。是否尝试从方法返回匿名类型的列表?据我所知,这是禁止的。不要从方法返回匿名类型,而是从具体类型返回。因此,在这种情况下,创建一个类DssClient并返回一个列表或IEnumerable是有意义的。您返回的列表中,T是编译器为您的select生成的匿名类型,而您的方法需要一个列表。您必须使用具体类型或从方法返回列表。