天天看點

Linq體驗(二)

SelfDataDataContext cc = new SelfDataDataContext();

select 用法

protected void Button1_Click(object sender, EventArgs e)

    {

        //select 的用法

        //簡單用法,不帶條件,查詢 姓名,薪金

        var q1 = from p in cc.userss select p;//傳回全部列

        var q2 = from p in cc.userss select p.name;//傳回單一列

        //當顯示多列時,要用匿名類型

        var q3 = from p in cc.userss select new {p.name,p.salary };

        //列别名用法(注意:列名不加引号)

        var q4 = from p in cc.userss select new {namee=p.name,薪金=p.salary };

        //列别名用法之列組合,職位+姓名=那個誰(例如:姓氏+名字=姓名)

        var q5 = from p in cc.userss select new { 那個誰=p.description+p.name, 薪金 = p.salary };

Linq體驗(二)

//查詢結果 運算(例如:女好漢薪金*3倍+100元補助(節日加班))

 var q6 = from p in cc.userss where p.sex=="女" select new { 姓名=p.name,現在的薪金=p.salary,節日加班薪金=p.salary*3+100};

Linq體驗(二)

//同上,傳回保安職業,并在結果集中過濾選擇 1700以上薪金的人員(>1700)的薪為0

//這裡的過濾不是條件查詢,而是對過濾出來的資料進行條件選擇。

 var q7 = from p in cc.userss where p.description == "保安" select new { p.name,salary=(p.salary>1700?0:p.salary)};

Linq體驗(二)

 //以上在多列時,采用的是匿名類型,以下是顯示的定義确定類型

 //注意不要顯示的構造cc.userss類型

 var q8 = from p in cc.userss select new Users { UserName = p.name, UserJob = p.description };

        //匿名類型裡的匿名類型,感覺這點太靈活了。

        //查詢結果為,姓名{職務,薪金,性别},每一個姓名包含三項屬性:職務,薪金,性别

        var q9 = from p in cc.userss select new {

        p.name,

        userInfo=new {p.description,p.salary,p.sex}

        };

       //在查詢中調用類方法(這點很強大,比如在sql2000中就不能switch分支。)

       //按男女性别區分,女的好漢姓名後加“女英雄”;男的好漢姓名後加“男好漢”

        var q10 = from p in cc.userss

                  select new

                  {

                      name=AddSuffixes(p.name,p.sex),p.sex,p.description

                  };

Linq體驗(二)

GridView1.DataSource =q10.ToList();

        GridView1.DataBind();

    }

    private string AddSuffixes(string strName,string strSex)

        switch (strSex)

        {

            case "男":

                return strName + "男好漢";

            case "女":

                return strName + "女英雄";

            default:

                return "分不出男女";

        }

備注:

有點表别名的意思。通過練習,會越來越熟練,并深入了解和應用Linq.

部落格園大道至簡

http://www.cnblogs.com/jams742003/

轉載請注明:部落格園

繼續閱讀