web-dev-qa-db-fra.com

Concaténer deux valeurs de colonne dans l'expression LinQ Lambda

Je suis nouveau sur LinQ et ces lambdas me paraissent délicats :(

J'ai une table où il y a deux colonnes. Prénom et nom. Je remplis un gridview en utilisant LinQ.

protected void Page_Load(object sender, EventArgs e)
    {
        myLinQtoSQLClassDataContext objDataContext = new myLinQtoSQLClassDataContext();

        var allUserList = from CurrentUser in objDataContext.Users.Where(c => c.Is_Deleted != false)                              
                          select new
                          {
                              CurrentUser.First_Name, 
                              CurrentUser.Last_Name,
                              CurrentUser.Email_ID,
                              CurrentUser.GUID
                          };

        GridView1.DataSource = allUserList;
        GridView1.DataBind();                              
    }

Je peux récupérer les valeurs en utilisant LinQ mais je veux concaténer le prénom et le nom avec un espace entre les deux.

La requête SQL équivalente que j'essaie d'acquérir serait la suivante:

Select First_name + ' ' + Last Name as Username, Email_ID, GUID
From tbl_Users where Is_Deleted != false

Comment puis-je y parvenir à travers l'expression lambda?

11
Manas Saha

Vous pouvez utiliser la concaténation de chaînes:

select new
{
    Username = CurrentUser.First_Name + " " + CurrentUser.Last_Name,
    CurrentUser.Email_ID,
    CurrentUser.GUID
};
19
Mark Byers

Essayer 

     select new
            {
                          FullName = CurrentUser.First_Name + " " + CurrentUser.Last_Name,
                          CurrentUser.Email_ID,
                          CurrentUser.GUID
            };
4
Mithrandir
var allUserList = from CurrentUser in objDataContext.Users.Where(c => c.Is_Deleted != false)                              
                  select new
                  {
                      Name = CurrentUser.First_Name + " " + CurrentUser.Last_Name, 
                      CurrentUser.Email_ID,
                      CurrentUser.GUID
                  };
2
Habib

Vous devez donner votre type anonyme 'clés' (propriétés en lecture seule):

select new
{
  Name = CurrentUser.First_Name + " " + CurrentUser.Last_Name,
};

Et ensuite, concaténez la chaîne lors de l'attribution du nom d'utilisateur.

1
Grant Thomas

jetez un oeil à ceci Méthode CLR de la cartographie des fonctions canoniques
. Net fournit de nombreuses méthodes pouvant être directement mappées sur les requêtes, vous devrez en utiliser une pour ajouter deux chaînes.
afin que vous puissiez utiliser est

select new 
{ 
    Username = Concat(first_Name,Last_Name), 
    CurrentUser.Email_ID, 
    CurrentUser.GUID 
}; 
1
Parv Sharma

Voici une autre variante qui fonctionne et ne figure pas dans la liste:

var allUserList =  objDataContext.Users.Where(c => c.Is_Deleted != false).
     Select(s => new{First_Name + " " + Last_Name, Email_ID, GUID});
0
Bruno