หากต้องการอัปเดตหนึ่งคอลัมน์นี่คือตัวเลือกไวยากรณ์บางส่วน:
ตัวเลือกที่ 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 กับ SQL และในกรณีนั้นเพื่อส่งไปยังฐานข้อมูลการใช้งานคือ:
db.SubmitChanges();
แต่สำหรับ Entity Framework ที่จะยอมรับการเปลี่ยนแปลงนั้นคือ:
db.SaveChanges()
records.ForEach(x=> { x.Deleted = true; x.DeletedByUserID = deletedByUserId; x.DeletedOn = DateTime.Now; });