Вы не должны пытаться что-то изменить из LINQ запросов. Это плохая практика, если запросы LINQ вызывают побочные эффекты. Но вы можете собрать информацию вам нужно обновить:
var updateQuery = from r1 in datatable1.AsEnumerable()
join r2 in datatable2.AsEnumerable()
on r1.Field<string>("header") equals r2 .Field<string>("header")
select new { r1, r2 };
foreach(var x in updateQuery)
{
x.r1.SetField("state", x.r2.Field<string>("state"));
}
Запрос на самом деле просто запроса, он выполняется только один раз в foreach
, но и каждый раз, когда вы будете получить доступ к updateQuery
-переменным благодаря LINQ-х отсроченное исполнение. Если вы этого не хотите, вам нужно создать коллекцию, т. Е. с ToList
или ToArray
.
Вот он: [Введение LINQ To Dataset] (https://www.tutorialspoint.com/linq/linq_dataset.htm) –