Concatenate two variables into one using LINQ

Asked

Viewed 76 times

1

Through LINQ I make a query in the database in the fields CPF and CNPJ table People and need to assign these two table fields to a single variable Document to display on screen. According to the code below that I have, how can I concatenate these two fields, assigning the values a single variable?

var mapeamento = new DataColumnMappingCollection
{
    {nameof (Pessoa.Id), "Código"},
    {nameof (Pessoa.Nome), "Nome"},
    {nameof (Pessoa.CPF), "CPF"},
    {nameof (Pessoa.CNPJ), "CNPJ"},
    {nameof (Pessoa.Apelido), "Apelido"},
};

OrigemDados = new OrigemDados(
    pessoaService
        .RecuperarTodos(httpContextAccessor.HttpContext.User)
        .Select(pessoa => new { pessoa.Id, pessoa.Nome, pessoa.CPF, pessoa.CNPJ, pessoa.Apelido})
        .AsQueryable(),
    usuario => usuario
        .GetType()
        .GetProperty("Nome")
        .GetValue(usuario)
        .ToString(),
    mapeamento);

1 answer

0


Response to the problem presented:

On the line where the Select, concatenate pessoa.CPF with pessoa.CNPJ using the sum operator +, assigning concatenation to a variable created right there, in the case of the example, the variable Document.

The result is Document = person.CPF + person.CNPJ

This will return a single variable Document which may contain CPF or CNPJ data.

var mapeamento = new DataColumnMappingCollection
{
    {nameof (Pessoa.Id), "Código"},
    {nameof (Pessoa.Nome), "Nome"},
    {nameof (Pessoa.CPF), "CPF"},
    {nameof (Pessoa.CNPJ), "CNPJ"},
    {nameof (Pessoa.Apelido), "Apelido"},
};

OrigemDados = new OrigemDados(
    pessoaService
        .RecuperarTodos(httpContextAccessor.HttpContext.User)
        .Select(pessoa => new { pessoa.Id, pessoa.Nome, Documento = pessoa.CPF + pessoa.CNPJ, pessoa.Apelido})
        .AsQueryable(),
    usuario => usuario
        .GetType()
        .GetProperty("Nome")
        .GetValue(usuario)
        .ToString(),
    mapeamento);

Browser other questions tagged

You are not signed in. Login or sign up in order to post.