Modifier l'élément dans la collection avec LINQ
J'ai le code suivant:
List<Car> allCars = new List<Car>
{
new Car(1977, "Ford", "Pinto"),
new Car(1983, "Ford", "Taurus"),
new Car(1981, "Dodge", "Colt"),
new Car(1982, "Volkwagen", "Scirocco"),
new Car(1982, "Dodge", "Challenger")
};
Array.ForEach(allCars.ToArray(), Console.WriteLine);
//I want to do an "in-place" modification of an item in
//the list
var query = allCars.Select(x =>
{
if (x.Model == "Colt") return "Dart";
});
public class Car
{
public int Year { get; set; }
public string Make { get; set; }
public string Model { get; set; }
public Car(int year, string make, string model)
{
Year = year; Make = make; Model = model;
}
public override string ToString()
{
return string.Format("{0} - {1} {2}", Year, Make, Model);
}
}
Maintenant, je sais que je peux le faire:
var query = allCars.Select(c => c.Model == "Colt");
Ou ceci:
for (var item in allCars.Select(c => c.Model == "Colt"))
{
item.Model = "Dart";
}
Ou ceci:
allCars.Single(c => c.Model == "Colt").Model = "Dart";
Mais comment sur la modification de l'article "sur place" dans la liste?
Le dernier moyen je l'ai mentionné fonctionnera bien si j'ai une propriété à modifier, mais si j'ai deux?
Vous devez vous connecter pour publier un commentaire.
LINQ est un langage d'interrogation, il doit conserver l'original de la collection immuable.
C'est ok
Veuillez lire ce post sur pourquoi il n'est pas mis en œuvre dans LINQ
Cannot modify members of 'item' because it is a 'foreach iteration variable