2009-08-27 14 views
5

¿Cómo puedo comprobar si una lista contiene un elemento ... realmente solo me interesa verificar 1 campo, no todos los campos de la lista.SharePoint: compruebe si el elemento existe en una lista, sobrecarga mínima

¿Cómo se puede hacer esto de la manera más eficiente, creando un SPListItemCollection e iterando a través de esto para verificar valores únicos realmente va a planear el uso de la CPU ... Seguramente debe haber una manera de hacer esto sin iterar a través de cada elemento en la lista?

Respuesta

11

Aquí hay una buena comparison of techniques de Waldek Mastykarz.

La regla general es usar SPQuery. Ver SharePointDevWiki para más detalles. Aquí hay un ejemplo básico:

SPList list = SPContext.Current.Web.Lists["Some List"]; 
SPQuery query = new SPQuery(); 
query.Query = @" 
    <Where> 
     <Eq> 
      <FieldRef Name='SomeField' /> 
      <Value Type='Text'>Value To Match</Value> 
     </Eq> 
    </Where>"; 
SPListItemCollection found = list.GetItems(query); 
if (found.Count > 0) 
{ 
    // Do something 
} 

Algunas notas acerca de SPQuery:

  • Si usted recibe su consulta mal, puede devolver todas las respuestas en lugar de dar un error
  • Si usted recibe su consulta equivocada , que a veces puede dar un error inútil/engañosa
  • Asegúrese de obtener el tipo de valor correcto

Guardar usted mismo un montón de problemas mediante el uso de una herramienta como U2U CAML Builder (Windows o Web versiones - Web es mejor en mi humilde opinión) o Stramit CAML Viewer para construir y prueba sus consultas.

+0

Gracias otra vez Alex –

Cuestiones relacionadas