我有Linq脚本,我想使用投影类获得数据的DTO类型。我得到了lambda expersion的例子,但在LINQ脚本上出错。
Linq脚本:
public class EziTransactionDto
{
... other properties
public static Expression<Func<EziTransactionEntity, EziTransactionDto>> Projection()
{
return eziTransactionDto => new EziTransactionDto
{
EziTransactionId = eziTransactionDto.Id,
LoginSiteID = eziTransactionDto.LoginSiteID,
WorkCodes = eziTransactionDto.WorkCodes
};
}
Linq查询:
var ts = (from transaction in _eziTransactionRepository.GetAll<EziTransactionEntity>()
where transaction.LoginErrorCode != 0
select transaction
).Select(EziTransactionDto.Projection);
错误:
3条答案
按热度按时间j5fpnvbx1#
我猜关键字
Expression
在这里是奇怪的。试试这个:
hsvhsicv2#
在第一次选择之后,IQueryable已经将数据提取到本地进程,并使其成为IEnumerable。
您可以在Select语句中执行此转换:
但是,如果您需要在多个地方将EziTransactionEntities转换为EziTransactionDtos,那么为
IQueryable<EziTransactionEntities>
创建一个可重用的扩展方法是一个好主意。如果您不熟悉扩展方法,请参阅extension methods demystified
使用方法:
可重复使用:
易于单元测试:
易于维护:如果添加/删除/更改此转换一个属性,则只需在一个位置执行此操作
k2arahey3#
寻找答案
..