是否可以创建投影方法? [LINQ2SQL]

时间:2012-07-06 10:00:30

标签: linq-to-sql c#-4.0

我希望能够做这样的投射:

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翻译)。 我不确定这是否可能,但它会很好^^

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

1 个答案:

答案 0 :(得分:0)

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

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

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

强制MyTable枚举其条目的任何内容都应该有效。