0

私は同じ電話番号を持つ重複した連絡先を取得するアプリケーションに取り組んでいます。私の問題は、通常のforeachが大量の連絡先で遅いことです。また、述語を使用してそれを行う方法がないことも知っています。しかし、モノタッチのサンプルは見つかりませんでした。

4

2 に答える 2

0

O(N)時間でできます。この回答では、1 つのループを使用して配列内の重複を識別しています: https://stackoverflow.com/a/12948182/1441667。スチュアートの答えをこのアプローチと組み合わせてみてください。

于 2013-02-06T12:37:09.967 に答える
0

ABAddressBook についてはわかりませんが、Xamarin Mobile APi を使用している場合は、次のように述語を使用できます。

var abook = new AddressBook();
abook.RequestPermissions().ContinueWith (t =>
{
    if (!t.Result)
        return; // Permission denied

    var builder = new StringBuilder();

    // Full LINQ support
    foreach (Contact c in abook.Where (c => c.FirstName == "Eric" && c.Phones.Any()))
    {
        builder.AppendLine (c.DisplayName);
        foreach (Phone p in c.Phones)
            builder.AppendLine (String.Format ("{0}: {1}", p.Label, p.Number));

        builder.AppendLine();
    }

    contacts.Text = builder.ToString(); // Update UI

}, TaskScheduler.FromCurrentSynchronizationContext()); // Ensure we're on the UI Thread

http://betaapi.xamarin.com/?link=T%3aXamarin.Contacts.AddressBookから

于 2013-02-05T18:33:40.700 に答える