2009-08-27 46 views
5

如何检查列表是否包含项目...真的只对检查1个字段感兴趣,而不是检查列表中的每个字段。SharePoint:检查项目是否存在于列表中,最小开销

这怎么能以最有效的方式完成,创建一个SPListItemCollection并通过这个来检查唯一值是否真的会使CPU使用率变得平坦......当然,必须有一种方法来做到这一点,列表中的每个项目?

回答

11

这是来自Waldek Mastykarz的comparison of techniques

一般规则是使用SPQuery。有关更多详细信息,请参阅SharePointDevWiki。这里有一个简单的例子:

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 
} 

约SPQuery的几个注意事项:

  • 如果你得到你的查询错误,它可以返回,而不是给了一个错误
  • 所有的答案。如果你得到你的查询错误,它有时会给出一个无用/误导性错误
  • 确保你得到的值类型正确

保存使用诸如U2U CAML Builder(WindowsWeb版本 - Web更好的恕我直言)或Stramit CAML Viewer来构建和测试您的疑问,您自己会遇到很多麻烦。

+0

再次感谢亚历克斯 – 2009-08-27 11:42:22

相关问题