Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic.List”_C#_Linq - Fatal编程技术网

C# 无法将类型“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

我是LINQ的新手 我得到了这个错误

无法隐式转换类型 System.Collections.Generic.List到 System.Collections.Generic.List

我想不出如何解决这个错误

这是我的密码:

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生成的匿名类型,而您的方法需要一个列表。您必须使用具体类型或从方法返回列表。