使用StringBuilder创建动态搜索查询

时间:2013-10-03 11:38:43

标签: c# sharepoint lambda caml

我有一个搜索表单,其中包含像checkboxlist(Multi Select),文本框这样的控件中的数据 我需要在SharePoint列表中搜索值,并在网格视图中显示列表记录。

请建议我如何编写动态的搜索查询。 例如:如果在一个文本框中没有选择任何值,我不需要在查询中包含它。

2 个答案:

答案 0 :(得分:1)

您可以运行SPMetal来生成静态对象,以使用LINQ

查询列表
  1. http://msdn.microsoft.com/en-us/library/ee538255%28v=office.14%29.aspx
  2. http://zimmergren.net/technical/sp-2010-getting-started-with-linq-to-sharepoint-in-sharepoint-2010
  3. 或者只使用旧的但有效的CAML查询

    SPQuery oQuery = new SPQuery();
    oQuery.Query = "<Where><Eq><FieldRef Name='YourField'/>" +
        "<Value Type='Text'>Insert value to search here</Value></Eq></Where>";
    SPListItemCollection collListItems = oList.GetItems(oQuery);
    

    直接的linq查询

    var results = MySPList.Items.Cast<SPListItem>()
                  .Where(SPItem => SPItem["YourField"] == "Your query");
    

    但是,如果您打算经常使用linq查询,则运行spmetal是一种方法,因为在splists上使用直接linq查询会导致严重的性能问题。

答案 1 :(得分:0)

使用StringBuilder动态形成查询。

if (!(String.IsNullOrEmpty(implanter)))
{
      query[querycount] = "<In><FieldRef Name='Implanter' /><Values>" + implanter + "</Value></In>";
                            querycount++;
}