Linq to sql 是否可以创建投影方法?[linq2sql]

Linq to sql 是否可以创建投影方法?[linq2sql],linq-to-sql,c#-4.0,Linq To Sql,C# 4.0,我希望能够进行这样的预测: var result = from record in MyTable select MapTo( record ); /* select new RecordModel( ) { RecordId = record.Id, Property1 = record.Property1

我希望能够进行这样的预测:

var result = from record in MyTable
             select MapTo( record );

             /*
             select new RecordModel( )
             {
                 RecordId = record.Id,
                 Property1 = record.Property1
             };
             */

private RecordModel MapTo( MyTable dbRecord )
{
    return new RecordModel( )
    {
        RecordId = dbRecord.Id,
        Property1 = dbRecord.Property1
    };
}
但我总是得到一个“NotSupportedException”(没有支持的sql转换)。 我不确定这是否可能,但那会很好^^


当我使用表达式时,这可能是可能的,但我不知道如何编写这样的表达式。

Linq尝试将该方法添加到查询中,但发现它无法转换为Sql

为了能够在Linq查询中执行任何CLR方法,您需要首先执行它的sql部分,以便对内存中的对象进行操作。像这样:

var result = from record in MyTable.ToList()
             select MapTo(record);

任何迫使MyTable枚举其条目的操作都应该有效

因此,如果我理解正确,就不可能创建映射方法并保留IQueryable?而不是使用CLR类。在执行查询之前,您必须保留LINQtoSQL类。使用anomymous类型也可以,但由于它们是匿名的,所以您无法保留一个包含查询的字段。