Linq学习__03__数据源是IEnumerable<T> 变量,Concat,匿名类,数组下标,返回字符串,group by,orderby

想运行本程序,请先做好准备工作,请参考:Linq学习__00__准备工作

(1)在HomeController创建新的方法,起名为Index1,其如代码1.1


代码1.1

#region 数据源是IEnumerable<T> 变量
        /// <summary>
        /// 数据源是IEnumerable<T> 变量
        /// 访问地址 Home/Index1
        /// Concat()方法,返回匿名类,返回正常普通类,group by
        /// </summary>
        /// <returns></returns>
        public ActionResult Index1()
        {
            // 创建学生类
            List<Student> students = new List<Student>()
            {
                new Student {First="二代",
                            Last="富",
                            ID=111,
                            Street="123 Main Street",
                            City="大连",
                            Scores= new List<int> {97, 92, 81, 60}},
                new Student {First="二麻子",
                            Last="王",
                            ID=112,
                            Street="124 Main Street",
                            City="深圳",
                            Scores= new List<int> {75, 84, 91, 39}},
                new Student {First="吊丝",
                            Last="项",
                            ID=113,
                            Street="125 Main Street",
                            City="上海",
                            Scores= new List<int> {88, 94, 65, 91}},
            };
            // 创建教师类
            List<Teacher> teachers = new List<Teacher>()
            {
                new Teacher {First="柜", Last="钱", ID=945, City = "大连"},
                new Teacher {First="斌", Last="孙", ID=956, City = "深圳"},
                new Teacher {First="廉洁", Last="李", ID=972, City = "北京"}
            };
            // 用Concat连接两个子查询,查找城市在“大连”的学生和教师
            var peopleInSeattle = (from student in students
                                   where student.City == "大连"
                                   select student.First)
                                  .Concat(from teacher in teachers
                                          where teacher.City == "大连"
                                          select teacher.First);
            ViewBag.Concat = peopleInSeattle;

            //用匿名类获取多个属性的元素,此时接收的变量是任意的
            var anonymous = from student in students
                            select new
                            {
                                First_rand = student.First,//变量是任意的
                                Last_ha_ha = student.Last//变量是任意的
                            };
            ViewBag.anonymous = anonymous;

            //用普通正常类获取多个属性的元素,此时接收的变量必须是声明的Student类的属性
            var hasNameClass = (from student in students
                                select new Student
                                 {
                                     First = student.First,//First必须是Student类的属性
                                     Last = student.Last//Last必须是Student类的属性
                                 }).ToArray();
            ViewBag.hasNameClass = hasNameClass;

            //使用数组下标,检索出第一科成绩大于80分的学生
            var studentQuery =from student in students
                              where student.Scores[0] > 80
                              select student;
            ViewBag.studentQuery = studentQuery;

            //使用对应参数返回字符串
            var studentQuery1 = from student in students
                               select string.Format("我是{0}{1}", student.Last, student.First);
            ViewBag.studentQuery1 = studentQuery1;

            //使用group by
            var studentQuery2 =from student in students
                               group student by student.Last[0];//注意,linq可以用group语句结尾,再有就是用select结尾,没有第三个了。
            ViewBag.studentQuery2 = studentQuery2;

            //分组后按字母顺序orderby
            var studentQuery3 = from student in students
                                group student by student.Last[0] into studentGroup
                                orderby studentGroup.Key
                                select studentGroup;
                                
            ViewBag.studentQuery3 = studentQuery3;

            return View();//返回View视图
        }
        #endregion 数据源是XMLIEnumerable<T> 变量


2)添加视图Index1.cshtml,代码如代码1.2


代码1.2

@{
    ViewBag.Title = "Index1";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@{
    <div style="background-color: Yellow;">
        用Concat连接两个子查询,查找城市在“大连”的学生和教师</div>
    foreach (var i in ViewBag.Concat)
    {
    <div>@i
    </div>
    }
    <br />
    <div style="background-color: Yellow;">
        用匿名类获取多个属性的元素,此时接收的变量是任意的</div>
    foreach (var j in ViewBag.anonymous)
    {
    <div>@j
    </div>
        //感兴趣的同学可以放开下面注释掉的语句执行以下,看会否成功
        @*<div>First_rand =@j.First_rand + , Last_ha_ha =@j.Last_ha_ha</div>*@
        //通过试验可知匿名类的属性是不能被调用的
    }
    <br />    
    <div style="background-color: Yellow;">
        用普通正常类获取多个属性的元素,此时接收的变量必须是声明的Student类的属性</div>
    foreach (var k in ViewBag.hasNameClass)
    {
    <div>
        First=@k.First ,Last=@k.Last</div>
    }
    <br />
    <div style="background-color: Yellow;">
        使用数组下标,检索出第一科成绩大于80分的学生</div>
    foreach (var m in ViewBag.studentQuery)
    {
    <div>
        First=@m.First ,Last=@m.Last</div>
    }
    <br />
    <div style="background-color: Yellow;">
        使用对应参数返回字符串</div>
    foreach (var n in ViewBag.studentQuery1)
    {
    <div>
        @n</div>
    }
    <br />
    <div style="background-color: Yellow;">
        使用group by,取数据要两层循环</div>
    foreach (var p in ViewBag.studentQuery2)
    {
        foreach (var g in p)
        {
    <div>我是 @g.Last @g.First</div>
        }
    }
    <br />
}


 

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值