Wah*_*eed 5 c# linq asp.net linq-to-sql
这两个陈述有什么区别:
var result = from c in context.CustomerEntities
join p in context.ProjectEntities on c.Pk equals p.CustomerPk
where p.Entered > DateTime.Now.AddDays(-15)
select c;
Run Code Online (Sandbox Code Playgroud)
和
var result = from c in context.CustomerEntities
join p in context.ProjectEntities on c.Pk equals p.CustomerPk
where p.Entered > DateTime.Now.AddDays(-15)
select new (c.Company, c.Entered, c.pk);
Run Code Online (Sandbox Code Playgroud)
这些陈述中是否存在与绩效相关的问题.(为简单起见,c只包含这3个coloums.)
谢谢.
Mar*_*ell 10
这两个陈述有什么区别
第一个返回原始/完整源对象的过滤序列; 第二个仍然使用过滤器,但返回一个只包含这三个属性的匿名类型的序列.
这些陈述中是否存在与绩效相关的问题
性能取决于后端.如果这是LINQ-to-Objects,那么new {...}每条记录都会创建额外的对象(匿名类型),因此可能会有非常小的开销.但是,如果这是LINQ-to-SQL等(数据库后端),那么这可能是一个巨大的好处.查询构建器将检查需要哪些列,并且只会获取anon类型中的三列; 如果您在数据中有(例如)BLOB(或者只是长varchar),那么这可能是一个巨大的好处.
附加说明:您不能在方法的签名中包含匿名类型,因此您可能会发现需要为此目的声明自己的DTO类型:
return new CustomerDto { Company = c.Company, Entered = c.Entered, PK = c.pk};
...
public class CustomerDto { ... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3935 次 |
| 最近记录: |