Ответ 1
Чтобы обновить один столбец, приведены некоторые варианты синтаксиса:
Вариант 1
var ls=new int[]{2,3,4};
using (var db=new SomeDatabaseContext())
{
var some= db.SomeTable.Where(x=>ls.Contains(x.friendid)).ToList();
some.ForEach(a=>a.status=true);
db.SubmitChanges();
}
Вариант 2
using (var db=new SomeDatabaseContext())
{
db.SomeTable
.Where(x=>ls.Contains(x.friendid))
.ToList()
.ForEach(a=>a.status=true);
db.SubmitChanges();
}
Вариант 3
using (var db=new SomeDatabaseContext())
{
foreach (var some in db.SomeTable.Where(x=>ls.Contains(x.friendid)).ToList())
{
some.status=true;
}
db.SubmitChanges();
}
Обновление
Как указано в комментарии, имеет смысл показать, как обновлять несколько столбцов. Поэтому позвольте сказать, что для этого упражнения мы хотим не просто обновить status
на одном. Мы хотим обновить name
и status
, где соответствует friendid
. Вот несколько вариантов синтаксиса для этого:
Вариант 1
var ls=new int[]{2,3,4};
var name="Foo";
using (var db=new SomeDatabaseContext())
{
var some= db.SomeTable.Where(x=>ls.Contains(x.friendid)).ToList();
some.ForEach(a=>
{
a.status=true;
a.name=name;
}
);
db.SubmitChanges();
}
Вариант 2
using (var db=new SomeDatabaseContext())
{
db.SomeTable
.Where(x=>ls.Contains(x.friendid))
.ToList()
.ForEach(a=>
{
a.status=true;
a.name=name;
}
);
db.SubmitChanges();
}
Вариант 3
using (var db=new SomeDatabaseContext())
{
foreach (var some in db.SomeTable.Where(x=>ls.Contains(x.friendid)).ToList())
{
some.status=true;
some.name=name;
}
db.SubmitChanges();
}
Обновление 2
В ответе я использовал LINQ to SQL, и в этом случае для фиксации в базе данных используется следующее:
db.SubmitChanges();
Но для Entity Framework для фиксации изменений это:
db.SaveChanges()