2009-08-27 16 views
5

Jak mogę sprawdzić, czy lista zawiera element ... naprawdę tylko zainteresowany sprawdzeniem 1 pola, a nie każdego pojedynczego pola na liście.SharePoint: Sprawdź, czy element istnieje na liście, minimalny narzut

W jaki sposób można to zrobić w najbardziej efektywny sposób, tworzenie elementu SPListItemCollection i iterowanie przez niego w celu sprawdzenia unikatowych wartości naprawdę wyprostuje użycie procesora ... Z pewnością musi istnieć sposób, aby to zrobić bez wprowadzania zmian każdy element na liście?

Odpowiedz

11

Oto dobry comparison of techniques z Waldek Mastykarz.

Ogólna zasada polega na użyciu SPQuery. Aby uzyskać więcej informacji, zobacz SharePointDevWiki. Oto prosty przykład:

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 
} 

Kilka uwag o SPQuery:

  • Jeśli pojawi się zapytanie źle, to może powrócić wszystkie odpowiedzi zamiast dawać błąd
  • Jeśli pojawi się zapytanie źle może czasami dać nieprzydatny/error Błędne
  • Sprawdź, czy masz typ poprawną wartość

Zapisz sobie wiele kłopotów, używając narzędzia takiego jak U2U CAML Builder (wersje Windows lub Web - Web is better IMHO) lub Stramit CAML Viewer do zbudowania i przetestowania swoich zapytań.

+0

Jeszcze raz dziękuję Alex –

Powiązane problemy