Обновите поле данных, основанное на значении, существующем в другой таблице данных в 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

Другие вопросы по тегам