当a&b使用LINQ具有类似签名时,IQueryable <a>列出<b>类型转换

Bad*_*ain 3 c# linq-to-entities entity-framework linq-to-sql asp.net-mvc-3

我有一些基本问题与linq,我试图谷歌但没有得到理想的reuslt.

让我们说我们有两个类似签名几乎相似的类:

public class A
    {
        public int a { get; set; }
        public int b { get; set; }
        public int c { get; set; }
    }

    public class B
    {
        public int x { get; set; }
        public int y { get; set; }
        public int z { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

这里A是数据上下文类,它是在创建.edmx文件时由框架生成的,B是我的自定义类,用于将数据传递给UI.我正在使用A查询数据库并获取可查询的列表.现在我需要将此列表转换为另一个类型B的列表.我该怎么做?

Jon*_*eet 6

您需要使用Select从一种类型投影到另一种类型,然后ToList创建一个列表:

// Property names changed to follow .NET naming conventions
var list = query.Select(a => new B { X = a.A, Y = b.B, Z = c.C })
                .ToList();
Run Code Online (Sandbox Code Playgroud)

编译器和运行时不关心你的类型是否具有相同的属性(在这种情况下它们不具有相同的属性 - 它们具有不同的名称) - 它们仍然是完全独立的类型.