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类型也可以,但由于它们是匿名的,所以您无法保留一个包含查询的字段。