私は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
どうすればラムダ式でこれを実現できますか?
文字列連結を使用できます。
select new
{
Username = CurrentUser.First_Name + " " + CurrentUser.Last_Name,
CurrentUser.Email_ID,
CurrentUser.GUID
};
試す
select new
{
FullName = CurrentUser.First_Name + " " + CurrentUser.Last_Name,
CurrentUser.Email_ID,
CurrentUser.GUID
};
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
};
anonymous type 'keys'(読み取り専用プロパティ)を指定する必要があります。
select new
{
Name = CurrentUser.First_Name + " " + CurrentUser.Last_Name,
};
そして、ユーザー名を割り当てるときに文字列を連結します。
これを見てください CLRメソッドから正規関数へのマッピング
。Netは、クエリに直接マップできる多くのメソッドを提供しています。これらのメソッドの1つを使用して、2つの文字列を追加する必要があります。
だからあなたが使えるものは
select new
{
Username = Concat(first_Name,Last_Name),
CurrentUser.Email_ID,
CurrentUser.GUID
};
select new
{
Username = string.Format("{0} {1}", CurrentUser.First_Name, CurrentUser.Last_Name),
CurrentUser.Email_ID,
CurrentUser.GUID
};
機能し、リストされていない別のバリエーションを次に示します。
var allUserList = objDataContext.Users.Where(c => c.Is_Deleted != false).
Select(s => new{First_Name + " " + Last_Name, Email_ID, GUID});