Если в вашем случае это список классов типа «Еда», то они будут ссылками. Вы можете проверить это с помощью простого консольного приложения, например:
static void Main(string[] args)
{
var foodList = new List<Food>
{
new Food { Id = 1, Name = "Peach" },
new Food { Id = 2, Name = "Pear" },
new Food { Id = 3, Name = "Apple" },
new Food { Id = 4, Name = "Garlic" },
};
var message1 = "entries in foodList: ";
var message2 = "entries in myNewFoodList: ";
ShowEntries(message1, foodList);
//Create new list with references
var myNewFoodList = foodList.Where(x => x.Id > 1).ToList();
ShowEntries(message2, myNewFoodList);
//Update original list item that was also included in the new list
foodList[1].Id = 7;
foodList[1].Name = "Pineapple";
ShowEntries(message1, foodList);
ShowEntries(message2, myNewFoodList);
Console.ReadLine();
}
public static void ShowEntries(string message, IList<Food> listOfFoods)
{
Console.WriteLine(message);
foreach (var item in listOfFoods)
{
Console.WriteLine("Id: " + item.Id + ", Name: " + item.Name);
}
Console.WriteLine();
}
class Food
{
public int Id { get; set; }
public string Name { get; set; }
}
Результаты показывают, что обновленный элемент в исходном списке также отображается как обновленный в новом списке: