1

J'essaie de sélectionner seulement 2 colonnes à partir des propriétés de navigation, mais incapable de le faire, quelqu'un peut-il me dire comment puis-je y parvenir?Comment sélectionner uniquement des colonnes particulières des propriétés de navigation en utilisant EF

Il fonctionne bonne façon par défaut (sélectionner toutes les colonnes):

var productreceipts = db.productreceipts.Include(p => p.employee).Include(p => p.productmaster).Include(p => p.vendor); 

Ce que je veux:

Sélectionnez seulement 2 colonnes forment chacun des employés, productmaster, tables de fournisseurs.

Je sais comment choisir si je une seule table:

var productreceipt = db.productreceipts.Select(p => new { p.ReceiptId, p.ReceivedBy }); 

EDIT: Je veux sélectionner toutes les propriétés de première table (productreceipts) et à seulement quelques choisis parmi d'autres.

Toute aide sera grandement appréciée.

Merci d'avance.

+1

'.Select (p => nouveau {propertyName = p.productmaster.SomeProperty}' –

Répondre

0

Vous pouvez utiliser comme:

var productreceipts = db.productreceipts.Include(p => p.employee). 
              .Select(p => new { propertyName = p.productmaster.SomeProperty }) 
+0

Je pense, il n'y a pas besoin d'utiliser la fonction '.Include()' lors de l'exécution de la requête '.Include()' la fonction est créé pour l'autre une raison spécifique/spéciale pour plus de vérifier ici: https://msdn.microsoft.com/en-us/library/bb738708(v=vs.110).aspx –

1

Essayez ceci:

var productreceipt = db.productreceipts 
    .Select(p => 
    new { productreceipts_prop_1 = p.productreceipts_prop_1, 
      productreceipts_prop_2 = p.productreceipts_prop_2, 
      productreceipts_prop_3 = p.productreceipts_prop_3, 
      productreceipts_prop_4 = p.productreceipts_prop_4, 

      employee_prop_1 = p.employee.employee_prop_1, 
      employee_prop_2 = p.employee.employee_prop_2, 

      productmaster_prop_1 = p.productmaster.productmaster_prop_1, 
      productmaster_prop_2 = p.productmaster.productmaster_prop_2, 

      vendor_prop_1 = p.vendor.vendor_prop_1, 
      vendor_prop_1 = p.vendor.vendor_prop_1, 
    }); 

EDIT:

Il n'y a pas besoin d'utiliser le .Include() Vous pouvez directement utiliser la propriété du navigateur pour récupérer les données.

+0

Refroidir ce look bien, mais ne peut pas nous le raccourcissons, signifie pourquoi sélectionner toutes les propriétés manuellement pour la première table (productreceipts) – Rakesh

+0

Vous pouvez également faire cela, mais vous recevrez l'objet de la classe 'productreceipts', dans lequel toutes les propriétés sont là. –

0

Si vous avez activé le chargement paresseux, vous pouvez alors utiliser directement

.Select(p => new { ProductId = p.productmaster.ProductId } 

sinon vous devrez prendre jointure interne et sélectionner des colonnes individuelles en simple sélection.