如何:在实体上执行通配符筛选器
通配符筛选器限制了返回到那些
field = value 的 Entity 实例,其中 value 可能包含通配符字符星号 (*)。您可以实现此筛选器类型来表示更多用户友好的筛选器,如 starts with 和 contains。
本主题说明了如何执行通配符筛选器。
示例
本示例演示了如何对 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("");
}
}
}
}