web-dev-qa-db-ja.com

LinQラムダ式で2つの列の値を連結する

私はLinQを使い始めたばかりで、それらのラムダは私には扱いにくいように見えます:(

2つの列があるテーブルがあります。苗字と名前。 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

どうすればラムダ式でこれを実現できますか?

12
Manas Saha

文字列連結を使用できます。

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

試す

     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

anonymous type 'keys'(読み取り専用プロパティ)を指定する必要があります。

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

そして、ユーザー名を割り当てるときに文字列を連結します。

1
Grant Thomas

これを見てください CLRメソッドから正規関数へのマッピング
。Netは、クエリに直接マップできる多くのメソッドを提供しています。これらのメソッドの1つを使用して、2つの文字列を追加する必要があります。
だからあなたが使えるものは

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

機能し、リストされていない別のバリエーションを次に示します。

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