Объединение двух значений столбцов в выражении LinQ Lambda

Я новичок в LinQ, и эти лямбды кажутся мне сложными: (

У меня есть таблица, где есть два столбца. Имя и фамилия. Я заполняю gridview с помощью 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();                              
    }

Я могу получить значения с помощью LinQ, но я хочу объединить имя и фамилию с промежутком между ними.

Эквивалентный SQL-запрос, который я пытаюсь выполнить, будет таким:

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

Как я могу достичь этого с помощью выражения лямбда?

Ответ 1

Вы можете использовать конкатенацию строк:

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

Ответ 2

Попробуйте

     select new
            {
                          FullName = CurrentUser.First_Name + " " + CurrentUser.Last_Name,
                          CurrentUser.Email_ID,
                          CurrentUser.GUID
            };

Ответ 3

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
                  };

Ответ 4

Вы должны указать анонимный тип "ключи" (свойства только для чтения):

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

И затем просто конкатенируйте строку при назначении имени пользователя.

Ответ 5

взгляните на этот метод CLR для канонического отображения функций
.Net предоставляет множество методов, которые могут быть непосредственно сопоставлены с запросами. Чтобы использовать две строки, нужно использовать одну из них. так что вы можете использовать

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

Ответ 6

Здесь другой вариант, который работает и не был указан:

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

Ответ 7

select new
{
    Username = string.Format("{0} {1}", CurrentUser.First_Name, CurrentUser.Last_Name),
    CurrentUser.Email_ID,
    CurrentUser.GUID
};