使用Linq To Sql lambda表达式检索更少的表字段

时间:2010-07-20 08:30:35

标签: sql linq-to-sql lambda

我想知道如何使用Linq To SQl Lambda表达式从表中获取数据子集......

假设我有一个表tbl_Product,包含字段ProductId,ProductCode,ProductName,Description,WhyBuyCopy,如果不需要其他字段,我如何才获得前三个字段,因为检索所有数据的时间要长一些(使用'设置统计时间')?

一个解决方案可能是创建一个扩展由linq2sql创建的部分类,只需要所需的字段,但我试图避免......

其他解决方案当然是使用

from p in base.dc.E_Products
select new E_Product
{
    ProductId = p.ProductId,
    ProductCode = p.ProductCode,
    etc
})

但我很想知道上面的代码是否有一个等效的lambda表达式。

谢谢

1 个答案:

答案 0 :(得分:1)

您提出的第二个解决方案不适用于LINQ to SQL,因为它不允许您在LINQ查询中创建新的LINQ to SQL实体,因为此实体不会有更改跟踪。

您最好的选择是使用匿名类型(如果可能)或仅使用这两个字段创建Data Transfer Object(DTO):

public class ProductDto
{
    public ProductId { get; set; }
    public ProductCode { get; set; }
}

from p in base.dc.E_Products
select new ProductDto()
{
    ProductId = p.ProductId,
    ProductCode = p.ProductCode,
});