2014-01-10 71 views
-1

我有一張表,用於存儲爲發送短信活動添加的所有聯繫人的信息。基於列表的LINQ批量更新

每條短信都與廣告系列相關聯。 campaignid用於維護該記錄。

我收到服務提供商發送的mobile_numberscampaign_id,一旦宣傳活動完成後即可發送。

現在我需要迭代smscontacts表並執行以下操作。

首先獲取所有記錄campaign_id。通過更新列issent爲1更新表格爲所有的移動號碼mobile_numbers列表中的所有聯繫人爆炸後提供商發送。

編輯:

查找在列表mobile_numbers的手機號碼列列值的行和更新要求這些記錄等欄目值。

+4

你的問題是不明確的。 –

+0

山姆,我有手機號碼列表。我需要在表中進行迭代並獲取列表中包含手機號碼的所有記錄。然後通過設置發送更新以顯示狀態1 –

回答

2

假設您的MobileNumber屬性是一個字符串,它沒有設置時爲空,空字符串或空白區域,請執行以下操作。

// Get contacts that have a mobile number 
IQueryable<Contact> contactsWithANumber = context.Contacts.Select(x => !string.IsNullOrWhiteSpace(x.MobileNumber)); 

// foreach 
foreach(Contact c in contactsWithANumber) 
{ 
    c.IsSent = 1; 
} 

// .ForEach() 
contactsWithANumber.ForEach(c => c.IsSent = 1); 

// Update in db. 
context.SaveChanges(); 
-1

您可以使用ExecuteCommand更新多條記錄:

yourContext.ExecuteCommand("UPDATE YourTable SET issent= 1 WHERE YourCondition"); 

有關信息,請DataContext.ExecuteCommand Method

+1

這不是LINQ,不建議使用EF –

+0

喜歡Sam,ExecuteCommand方法非常有用,可以執行大規模更新,因爲所有工作都是由SqlServer引擎實現的,並且它不需要檢索所有記錄,更新和下一個提交更改。 –

+0

這是現在dataContext.Database.ExecuteSqlCommand我相信。 – richardwhatever