2010-07-20 1 views
0

Je voudrais savoir comment obtenir un sous-ensemble de données à partir d'une table à l'aide Linq aux expressions SQl Lambda ...Retrieve moins de champs de table à l'aide de Linq Pour Sql lambda expressions

Disons que j'ai un tbl_Product de table, avec les champs ProductId, ProductCode, ProductName, Description, WhyBuyCopy, comment obtenir seulement les trois premiers champs quand les autres ne sont pas nécessaires étant donné que la récupération de toutes les données prend une seconde de plus (cochée avec 'set statistics time on')?

Une solution pourrait consister à créer une classe partielle qui étend celle créée par linq2sql, seuls les champs nécessaires, mais j'essaie d'éviter que ...

L'autre solution est bien sûr d'utiliser

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

mais je suis très curieux de savoir s'il existe une expression lambda équivalente pour le code ci-dessus.

Merci

Répondre

1

La deuxième solution que vous proposez ne fonctionne pas avec LINQ to SQL, car il ne vous permettra pas de créer une nouvelle entité LINQ à SQL dans une requête LINQ, étant donné que cette entité ne pas avoir changer le suivi.

Votre meilleure option est d'utiliser un type anonyme (si possible) ou créer un Data Transfer Object (DTO) avec seulement ces deux domaines:

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, 
}); 
Questions connexes