2010-11-26 12 views
11

La siguiente expresión devuelve un contacto: el contacto completo con docenas de propiedades. Esto está bien, pero, idealmente, me gustaría que la devolución sea solo la propiedad de identificación del contacto (contact.contactId). ¿Cómo hago esto?Devolución de una sola propiedad de un resultado de consulta LINQ

var assocOrg = Contacts.Where(x => x.ContactTypeID == 2 && x.OrganizationName == "COMPANY XYZ"); 

Respuesta

24
var result = Contacts.Where(x => ...) 
        .Select(x => x.ContactID); 

o

var result = from x in Contacts 
      where x.ContactTypeID == 2 && x.OrganizationName == "COMPANY XYZ" 
      select x.ContactID; 
1
var assocOrg = Contacts. 
       Where(x => x.ContactTypeID == 2 && x.OrganizationName == "COMPANY XYZ"). 
       Select(x => x.contactId); 
1
var assocOrg = Contacts.Where(x => x.ContactTypeID == 2 && x.OrganizationName == "COMPANY XYZ").Select(x=> x.contactId).FirstOrDefault(); 

Eso ayudaría a que la primera ContactId y la siguiente le conseguiría una lista de ContactId de

var assocOrg = Contacts.Where(x => x.ContactTypeID == 2 && x.OrganizationName == "COMPANY XYZ").Select(x=> x.contactId); 

En el estilo SQL que sería

var assocOrg = from contact in Contacts 
       where contact.ContactTypeId == 2 && contact.OrganizationName == "COMPANY XYZ" 
       select contact.ContactId; 
+1

sus 2 primeros ejemplos no funciona – Fredou

+0

Su Tiene razón, debería arreglarse y lo estoy poniendo en VS ahora para probarlo. – Howel

3

Si desea obtener un objeto único o primero que coinciden con sus condiciones, utilice la siguiente:

var result = Contacts.Where(x => ...) 
    .Select(x => x.ContactID).FirstOrDefault(); 
1
var result = Contacts.Where(x => ...) 
      .Select(x => x.ContactID).FirstOrDefault(); 
Cuestiones relacionadas