Вы не присвоили результат Join
какой-либо переменной, но он возвращает IEnumerable<T>
. Попробуйте немного обновить свой код, сохранить результат соединения и перебрать его
var result = lst.Join(GetList(), p => p.weight, q => q, (p, q) =>
{
p.name = "new";
return p;
}).ToList();
result.ForEach(p => Console.WriteLine(p.name));
В текущем коде вы просматриваете исходный код lst
, который остается неизменным.
Если вы хотите увидеть обновленное имя и изменения в исходных объектах, просто материализуйте свой запрос, используя ToList()
(потому что Join
реализовано с использованием отложенного выполнения), чтобы получить изменения сделано p.name = "new";
lst.Join(GetList(), p => p.weight, q => q, (p, q) =>
{
p.name = "new";
return p;
}).ToList();