[方法] エンティティに対して Wildcard フィルタを実行する
ワイルドカード フィルタは、フィールド = 値の場合に返される entity インスタンスを制限します。
ここで、値にはアスタリスク (*) のワイルドカード文字を含めることができます。 このフィルタの種類を実装して、次の文字列で始まる、次の値を含むなどの、よりユーザー フレンドリなフィルタを提示できます。
このトピックでは、Wildcard フィルタの実行方法を示します。
例
この例は、AdventureWorks2000 サンプルで Product エンティティに対して WildcardFinder メソッドを実行する方法を示しています。この例では、製品名に単語 bike が含まれている AdventureWorksSample で、そこに返される 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("");
}
}
}
}