2017-03-22 25 views
0

我正在使用Corodva联系人插件来获取本地电话联系人其工作很好,现在我需要与数据库进行比较,我不使用本地数据库,我正在使用SQL Server 2012和我使用WEBAPI编写了一些后端代码,它需要花费大量时间进行比较。我需要一些替代解决方案。请建议下面是我的代码。最好的方式comapare与服务器的电话联系人

  //Javascript/// 

    var phoneNumberCollection = new Array(); 

    function showContacts() { 

var options = new ContactFindOptions(); 
    options.filter = ""; 
    options.multiple = true; 
    options.desiredFields = [navigator.contacts.fieldType.id,navigator.contacts.fieldType.displayName, navigator.contacts.fieldType.name, navigator.contacts.fieldType.phoneNumbers]; 
options.hasPhoneNumber = true; 
    var fields = [navigator.contacts.fieldType.displayName, navigator.contacts.fieldType.name]; 
    navigator.contacts.find(fields, onSuccess, onError, options); 
} 

function onSuccess(contacts) 
    { 
    // here i have all contacts and i am pushing each number into  "phoneNumberCollection" array// 
    } 

function onError(err) 
{ 
} 

    self.GetContactsData = function() { 
    self.PhoneNumberCollection = phoneNumberCollection; 
    jQuery.support.cors = true; 
    $.ajax({ 
     type: "POST", 
     dataType: "json", 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify({mobilecollection: self.PhoneNumberCollection,}), 
     url: Url + 'api/xxxxxx/xxxxxxxx', 
     success: function (data) { 
      self.items($.map(data, function (item) { 
       return new ContactsModel(item); 
      })); 
     }, 
     error: function (err, type, httpStatus) { 
     } 
    }) 

} 

    //Web API 
    [HttpPost] 
    public IHttpActionResult GetContacts(JObject jsonData) 
    { 
     try 
     { 
      if (jsonData != null) 
      { 
       dynamic json = jsonData; 

       string[] mobilenumberCollection = json.mobilecollection.ToObject<string[]>(); 
    //here i am getting Mobile collection and i am comparing each number with DB. i need some alternative sugggestion for this 
    var getContacts = CBFriends.getAllcontacts(mobilenumberCollection, deviceUID); 
       if (getAllContacts != null) 
       { 
        return Ok(getAllContacts); 
       } 
       else { return NotFound(); } 

      } 
      else { 
       return BadRequest();} 
      } 
     catch (Exception) 
     { }  
     } 
+0

这取决于很多参数,哪个字段只检查DB中的ID或联系人中的所有字段? – Ygalbel

+0

@ybelbel感谢您的时间,我在我的数据库中有一个名为Mobile Number的列,所以我只需要检查一列,我只比较本地电话号码和数据库手机号码。 –

回答

0

在sql server中检查IN运算符。

您可以在一个查询中发送所有电话号码,并获取在db中不存在的电话号码。

检查this答案,看看如何在c#中实现这一点。

+0

感谢您的时间,我看到了,但我使用Linq来获取数据,是否有任何使用Linq sql的例子 –

+0

检查[这里](http://stackoverflow.com/questions/2334327/what-is- -nql-in-operator) – Ygalbel

+0

var MobileNumberExsitDB = dbContext.UserTable.Where(m => m.mobileNumber == mobilenumber).FirstOrDefault();我正在使用像这样的查询,这将在foreach循环中包含一个数字在时间的移动号码 –

相关问题