Обновите поле данных, основанное на значении, существующем в другой таблице данных в Asp.net C#
Привет, у меня есть два данных
Таблица
id isfav 1 0 2 0 3 0 4 0 5 0
favtable
Я бы 2 3
Поэтому я хочу обновить table1
поле isFav
до 1, если идентификаторы существуют в FavTable
,
Кто-нибудь может мне помочь в этом
2 ответа
В SQL...
UPDATE table SET isfav = 1 WHERE EXISTS(SELECT * FROM favtable WHERE favtable.id = table.id)
В Linq to SQL...
//Create DataContext first
foreach (var rec in from a in dc.table
join b in dc.favtable on a.id equals b.id
select a)
{
a.isfav = true;
}
dc.SubmitChanges();
... или (более эффективно)...
dc.ExecuteCommand("UPDATE table SET isfav = 1 WHERE EXISTS(SELECT * FROM favtable WHERE favtable.id = table.id)");
Так как в комментариях было упомянуто это DataTable
Вы могли бы использовать Join
между этими таблицами, как показано ниже, и обновите поле.
table1.AsEnumerable()
.Join( table2.AsEnumerable(),
t1 => t1.Field<int>("id"),
t2 => t2.Field<int>("id"),
(t1, t2) => new { t1 })
.ToList()
.ForEach(o => o.t1["isfav"] = 1);
Проверь это working code