13

我是 LinQ 的新手,那些 lambdas 对我来说似乎很棘手:(

我有一张桌子,里面有两列。名字和姓氏。我正在使用 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

如何通过 lambda 表达式实现这一点?

4

7 回答 7

23

您可以使用字符串连接:

select new
{
    Username = CurrentUser.First_Name + " " + CurrentUser.Last_Name,
    CurrentUser.Email_ID,
    CurrentUser.GUID
};
于 2012-04-19T09:24:45.277 回答
4

尝试

     select new
            {
                          FullName = CurrentUser.First_Name + " " + CurrentUser.Last_Name,
                          CurrentUser.Email_ID,
                          CurrentUser.GUID
            };
于 2012-04-19T09:24:53.223 回答
2
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
                  };
于 2012-04-19T09:26:39.150 回答
1

你应该给你的匿名类型'keys'(只读属性):

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

然后在分配用户名时连接字符串。

于 2012-04-19T09:25:27.337 回答
1

看看这个CLR Method to Canonical Function Mapping
.Net 提供了许多可以直接映射到查询的方法,你必须使用其中一个来添加两个字符串
,所以你可以使用的一个是

select new 
{ 
    Username = Concat(first_Name,Last_Name), 
    CurrentUser.Email_ID, 
    CurrentUser.GUID 
}; 
于 2012-04-19T09:27:19.127 回答
0

这是另一个有效但尚未列出的变体:

var allUserList =  objDataContext.Users.Where(c => c.Is_Deleted != false).
     Select(s => new{First_Name + " " + Last_Name, Email_ID, GUID});
于 2014-07-30T20:19:12.460 回答
0
select new
{
    Username = string.Format("{0} {1}", CurrentUser.First_Name, CurrentUser.Last_Name),
    CurrentUser.Email_ID,
    CurrentUser.GUID
};
于 2019-06-30T18:31:37.680 回答