如何:在实体上执行通配符筛选器

通配符筛选器限制了返回到那些

field = value 的 Entity 实例,其中 value 可能包含通配符字符星号 (*)。您可以实现此筛选器类型来表示更多用户友好的筛选器,如 starts withcontains

本主题说明了如何执行通配符筛选器。

示例

本示例演示了如何对 AdventureWorks2000 示例中的 Product 实体执行 WildcardFinder 方法。该示例限制了返回到 AdventureWorksSample 示例中的那些产品名中包含单词 bike 的 Entity 实例。

先决条件

  • 确保已创建了一个共享服务提供程序。

  • 用您的共享资源提供程序的名称来替换代码中的 EnterYourSSPNameHere 常数值。

  • 确保 LobSystem 和该示例中引用的实体名称存在于业务数据目录中。请使用有效的名称。

项目引用

在运行此示例之前,先在您的控制台应用程序代码项目中添加以下项目引用:

  • Microsoft.SharePoint

  • Microsoft.SharePoint.Portal

  • Microsoft.Office.Server

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Microsoft.Office.Server.ApplicationRegistry.MetadataModel;
using Microsoft.Office.Server.ApplicationRegistry.Runtime;
using Microsoft.Office.Server.ApplicationRegistry.SystemSpecific;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using WSSAdmin = Microsoft.SharePoint.Administration;
using OSSAdmin = Microsoft.Office.Server.Administration;

namespace Microsoft.SDK.SharePointServer.Samples
{
    class ExecuteWildcardFilter
    {
        const string yourSSPName ="EnterYourSSPNameHere";

        static void Main(string[] args)
        {
            SetupBDC();
            FindFiltered();
            Console.WriteLine("Press any key to exit...");
            Console.Read();
        }
        static void SetupBDC()
        {
            SqlSessionProvider.Instance().SetSharedResourceProviderToUse(yourSSPName);
        }
        static void FindFiltered()
        {
            NamedLobSystemInstanceDictionary sysInstances = ApplicationRegistry.GetLobSystemInstances();
            LobSystemInstance AdvWorksIns = sysInstances["AdventureWorksSampleInstance"];
            Entity prodEntity = AdvWorksIns.GetEntities()["Product"];
            FilterCollection fc = prodEntity.GetFinderFilters();
            FilterCollection newfc = new FilterCollection();
            for (int i = 0; i < fc.Count; i++)
            {
                if (fc[i].GetType().FullName == "Microsoft.Office.Server.ApplicationRegistry.Runtime.WildcardFilter")
                {
                    if (string.IsNullOrEmpty("Name") || (0 == string.Compare(fc[i].Name, "Name")))
                    {
                        newfc.Add(fc[i]);
                    }
                }
            }
            ((WildcardFilter)newfc[0]).Value = "%bike%";
            IEntityInstanceEnumerator prodEntityInstanceEnumerator = prodEntity.FindFiltered(newfc, AdvWorksIns);
            while (prodEntityInstanceEnumerator.MoveNext())
            {
                IEntityInstance IE = prodEntityInstanceEnumerator.Current;
                foreach (Field f in prodEntity.GetFinderView().Fields)
                    Console.Write(IE[f]);
                Console.WriteLine("");
            }
        }
    }
} 

See Also

概念

业务数据目录:元数据模型

其他资源

浏览元数据存储库和执行方法及筛选器

使用业务数据目录构建自定义应用程序