static void Main(string[] args)
        {
            var array = Enumerable.Range(1, 3);
            var first = array.First(item => item == 1);
            first = 100;

            foreach (var value in array)
            {
                Console.WriteLine(value);
            }

            Console.ReadKey();
        }
この結果ってどういった表示になると思います?
正解は
1
2
3
となります。
これはarrayがintの配列情報で、検索した結果が値型なので「100」で置き換わりません。

次に
        private class Test
        {
            public int value;
        }

        static void Main(string[] args)
        {
            var array = new List<Test>()
            {
                new Test{ value = 1 },
                new Test{ value = 2 },
                new Test{ value = 3 }
            };

            var first = array.First(item => item.value == 1);
            first.value = 100;

            foreach (var test in array)
            {
                Console.WriteLine(test.value);
            }

Console.ReadKey(); }
とした場合、結果はどうなるでしょうか?
正解は
100
2
3
となります。
これはarrayがクラスのリスト情報で、検索した結果が参照型なので「100」で置き換わります。