C# 泛型到特定列表在c中返回“无法强制转换错误”

C# 泛型到特定列表在c中返回“无法强制转换错误”,c#,.net,linq,C#,.net,Linq,我正在使用.NET4.6,我正在尝试从通用列表创建一个特定列表。编码通用列表:` var clients = (from a in accounts group j by new { a.Code, a.Name, a.AddressLine1,

我正在使用.NET4.6,我正在尝试从通用列表创建一个特定列表。编码通用列表:`

var clients = (from a in accounts
                       group j by new
                       {
                           a.Code,
                           a.Name,
                           a.AddressLine1,
                           a.Postcode,
                           a.City,
                       }
                       into g
                       select new
                       {
                           g.Key.Code,
                           g.Key.Name,
                           g.Key.AddressLine1,
                           g.Key.PowerTools,
                           g.Key.Internetportal,
                           g.Key.Huisvestingsplanning,
                           g.Key.Werkplanning,
                           g.Key.Vervoersplanning
                       }).ToList();
具体列表customer.cs:

struct Customer
{
    public string Code { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public double PowerTools { get; set; }
    public double Internetportal { get; set; }
    public double Huisvestingsplanning { get; set; }
    public double Werkplanning { get; set; }
    public double Vervoersplanning { get; set; }
}

转换:

customers = clients.Cast<List<object>>().Select(x => new Customer(){
            Code = (string)x[0],
            Name = (string)x[1],
            Address = (string)x[2],
            PowerTools = (double)x[3],
            Internetportal = (double)x[4],
            Huisvestingsplanning = (double)x[5],
            Werkplanning = (double)x[6],
            Vervoersplanning = (double)x[7]}).ToList();
此转换引发的错误: 无法将类型为“f_uAnonymousType68[System.String,System.String,System.String,System.Double,System.Double,System.Double,System.Double]”的对象强制转换为类型为“System.Collections.Generic.List1[System.object]”


谢谢

您的代码似乎试图将某个对象转换为其属性列表-这行不通,C不是JavaScript。这是可行的,但完全没有必要

您真正需要的是按照其使用方式使用匿名类型:

clients.Select(x => new Customer { Code = x.Code, Name = x.Name, ... }).ToList();
根据您使用的实际LINQ提供程序,甚至可以跳过中间人,直接选择到您自己的类型中—请参阅文档


另外,为了清楚起见,这两个列表都是通用的。区别在于第一个是匿名类型的泛型列表,而第二个是命名类型的泛型列表。

不可能强制转换为列表。只需使用客户端。选择并更改奇怪的x[…]代码。选择后,您的匿名类型已经是强类型,用例是什么?您不能直接强制转换到所需的类型,因为您正在创建一个与列表类型完全不同的匿名类型。但您可以将项目转移到列表中。。。你能解释一下你为什么要这样做,也许你误解了什么。我为什么要创建这个:我在Linq中进行了这个查询,它返回一个我能理解的通用列表和客户,我需要它像列表一样更具体,这样我就可以管理这个客户列表。