C# 使用StringBuilder创建动态搜索查询

C# 使用StringBuilder创建动态搜索查询,c#,sharepoint,lambda,caml,C#,Sharepoint,Lambda,Caml,我有一个搜索表单,它的控件中有数据,如复选框列表(多选)、文本框 我需要搜索SharePoint列表中的值,并在网格视图中显示列表记录 请建议我如何编写动态搜索查询。。 例如:如果在一个文本框中没有选择值。。我不需要将其包括在查询中。您可以运行SPMetal生成静态对象,以使用LINQ查询列表 或者只是使用一个古老而有效的CAML查询 SPQuery oQuery = new SPQuery(); oQuery.Query = "<Where><Eq><Fiel

我有一个搜索表单,它的控件中有数据,如复选框列表(多选)、文本框 我需要搜索SharePoint列表中的值,并在网格视图中显示列表记录

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

您可以运行SPMetal生成静态对象,以使用LINQ查询列表

  • 或者只是使用一个古老而有效的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);
    
    SPQuery oQuery=new SPQuery();
    oQuery.Query=“”+
    “在此处插入要搜索的值”;
    SPListItemCollection collistItems=oList.GetItems(oQuery);
    
    在直接的linq查询中

    var results = MySPList.Items.Cast<SPListItem>()
                  .Where(SPItem => SPItem["YourField"] == "Your query");
    
    var results=MySPList.Items.Cast()
    .Where(SPItem=>SPItem[“YourField”]==“您的查询”);
    

    但是,如果您计划经常使用linq查询,那么运行spmetal是一种方法,因为在SPList上使用直接linq查询可能会导致严重的性能问题。

    使用StringBuilder动态生成查询

    if (!(String.IsNullOrEmpty(implanter)))
    {
          query[querycount] = "<In><FieldRef Name='Implanter' /><Values>" + implanter + "</Value></In>";
                                querycount++;
    }
    
    if(!(String.IsNullOrEmpty(implanter)))
    {
    查询[查询计数]=“”+植入器+“”;
    querycount++;
    }
    
    使用Lambda表达式建议上述问题的解决方案