How to concatenate properties of a single List with LINQ?

2

I need to concatenate two properties of each item in my list, in the example below it works but would like to know how I can do the same thing using LINQ instead of foreach ?

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        List<Pessoas> lstPessoas = new List<Pessoas>();
        Pessoas pessoa = null;

        pessoa = new Pessoas();
        pessoa.Id = 1;
        pessoa.Nome = "Mauricio";
        lstPessoas.Add(pessoa);

        pessoa = new Pessoas();
        pessoa.Id = 2;
        pessoa.Nome = "João";
        lstPessoas.Add(pessoa);

        pessoa = new Pessoas();
        pessoa.Id = 3;
        pessoa.Nome = "Maria";
        lstPessoas.Add(pessoa);

        foreach (Pessoas item in lstPessoas)
        {
            item.Nome = item.Id + " - " + item.Nome;
        }
    }
}

public class Pessoas
{
    public int Id { get; set; }
    public string Nome { get; set; }
}
    
asked by anonymous 05.03.2015 / 13:27

1 answer

3

Do you see any reason to do this? This causes side effects, that is, some data is modified, so LINQ is not suitable. The Q there is query , that is, query. When you want to make more than one query, it is best to use the for each same command. LINQ should not be used when it does not have clear benefits. If you insist, you can use the ForEach method:

lstPessoas.ForEach(item => item.Nome = item.Id + " - " + item.Nome);

See running on dotNetFiddle . Curiously I made a for each to show the result and there LINQ would even make more sense.

    
05.03.2015 / 14:06