基于列表的LINQ批量更新

时间:2014-01-10 13:06:29

标签: c# linq entity-framework

我有一个表格,用于存储为发送短信广告系列而添加的所有联系人的信息。

每条短信都与广告系列相关联。 campaignid用于记录中以维护它。

广告系列完成后,我会收到服务提供商发送的mobile_numberscampaign_id

现在我需要迭代smscontacts表并执行以下操作。

首先获取campaign_id的所有记录。更新表格,将列issent更新为1,以便在爆炸后由提供商发送的mobile_numbers列表中包含移动电话号码的所有联系人。

编辑:

在列表mobile_numbers中查找具有移动号列列值的行,并更新为这些记录调用的其他列值。

2 个答案:

答案 0 :(得分: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 :(得分:-1)

您可以使用ExecuteCommand更新多条记录:

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

有关信息,请参阅DataContext.ExecuteCommand Method