Windows Phone 的联系人筛选和匹配

2012/2/9

您可以通过使用内置的搜索筛选器在目标为 Windows Phone OS 7.1 的应用程序中搜索联系人数据。您可以搜索所有联系人或固定到“开始”屏幕的联系人,也可以按姓名、电话号码或电子邮件地址进行搜索。

注意注意:

Windows Phone SDK 7.1 为您提供对用户的联系人数据(跨用户的不同帐户聚合在一起)的只读访问。有关更多信息,请参阅 Windows Phone 的联系人和日历

访问联系人数据的常规过程是获取对 Contacts 对象的引用,通过调用 SearchAsync 方法对其执行异步搜索,然后在 SearchCompleted 事件处理程序中捕获 Contact 对象集合形式的结果。有关更多信息,请参阅如何访问 Windows Phone 的联系人数据

下表显示不同的筛选器以及您可以使用这些筛选器执行的各种搜索的示例。

筛选器种类

示例搜索

说明

None

SearchAsync(String.Empty, FilterKind.None, "State String 1")

搜索所有联系人。

PinnedToStart

SearchAsync(String.Empty, FilterKind.PinnedToStart, "State String 2")

搜索固定到“开始”屏幕的所有联系人。

DisplayName

SearchAsync("A", FilterKind.DisplayName, "State String 3")

按显示名称进行搜索。

EmailAddress

SearchAsync("Chris@example.com", FilterKind.EmailAddress, "State String 4")

按电子邮件地址进行搜索。

PhoneNumber

SearchAsync("555-0004", FilterKind.PhoneNumber, "State String 5")

按电话号码进行搜索。

有内置的搜索筛选器,可用于按姓名、电话号码或电子邮件地址搜索联系人。针对基础数据库,快速建立这些搜索的索引。也可以搜索所有联系人,然后使用 LINQ 查询结果集合,但与使用内置搜索相比,速度较慢。

按姓名匹配

按名字、中名和姓氏的前缀子字符串匹配姓名。下表显示了一些示例。

筛选器字符串

名称

是否匹配?

Har

Harry Miller

Har

Phyllis Harris

Har

Jón Harry Óskarsson

har

Charlotte Weiss

har

Dave Natsuhara

按电话号码匹配

通过完全匹配和智能匹配来匹配电话号码。忽略差异,如区号和国际拨号代号。数字的后六位必须匹配。忽略所有标点符号。下表显示了一些示例。

筛选器字符串

电话号码

是否匹配?

4255551212

(425) 555-1212

2065551212

(425) 555-1212

5551212

(425) 555-1212

425555

(425) 555-1212

按电子邮件地址匹配

通过完全匹配和智能匹配来匹配电子邮件地址。@ 符号前的名字部分必须完全匹配。下表显示了一些示例。

筛选器字符串

电子邮件地址

是否匹配?

john@cohowinery.com

john@cohowinery.com

jon@cohowinery.com

john@cohowinery.com

john@exchange.cohowinery.com

john@cohowinery.com

john@exchange.com

john@cohowinery.com

john@com

john@cohowinery.com

是(false 匹配)

john@cohowinery

john@cohowinery.com

john@coho.com

john@cohowinery.com

是(false 匹配)

可以搜索所有联系人,然后使用 LINQ 查询结果集合,但与使用内置搜索相比,速度较慢。如果可能,应该使用内置的搜索筛选器,使用这些筛选器可以按姓名、电话号码或电子邮件地址搜索联系人。有关对联系人和约会数据使用 LINQ 的示例,请参阅如何访问 Windows Phone 的联系人数据如何访问 Windows Phone 的日历数据

显示: