2014-01-10 69 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