MVC初体验-EF查询(Lambda的用法)(18)

使用数据库:NorthWind示例数据库 (链接:https://www.cnblogs.com/liverpool/p/4718042.html

后台代码:

namespace T1_EF.Controllers
{
    public class CustomersController : Controller
    {
        // GET: Customers
        public ActionResult Index()
        {
            //NorthwindEntities northwind = new NorthwindEntities();
            //var list = northwind.Customers.Select(c =>c);
            //建议使用下面这种写法,面向抽象编程,使用多态,并且更灵活
            //DbContext dbContext = new NorthwindEntities();
            //var list = dbContext.Set<Customers>().Select(c => c);

            //使用Linq练习操作
            dynamic list;
            DbContext db = new NorthwindEntities();
            //基本查询
            //list = from customer in db.Set<Customers>() select customer;

            //单条件查询
            //list = from customer in db.Set<Customers>() where customer.Country == "USA" select customer;  

            //多条件查询
            //list = from customer in db.Set<Customers>()
            //       where customer.Country == "USA" || customer.Country == "Canada"
            //       select customer;

            //查询单列(这样就不能使用强类型视图了)
            //list = from customer in db.Set<Customers>() select customer.Country;

            //查询多列(将select后换为匿名对象或者要展示的对象)(建议新增viewModel作为视图对象,否则在前台数据必须进行反序列化操作)
            //list = from customer in db.Set<Customers>() select new CustomerModel{ ContactName= customer.ContactName,CompanyName= customer.CompanyName };

            //分页,Skip就是跳过元素,Take就是要返回排在前面的几个元素,一般与OrderBy排序使用(注意:是方法特有的,不是Linq写法)
            list = (from customer in db.Set<Customers>() select
                   customer).OrderBy(c => c.CompanyName).Skip(5).Take(15);

            ViewData.Model = list;
            return View();
        }

        public ActionResult FuncTionIndex()
        {
            //使用方法进行查询
            DbContext db = new NorthwindEntities();

            //返回全部数据
            var list = db.Set<Customers>();

            //单条件查询(像JQuery的树一样叠加)
            //var list1 = list.Where(c => c.Country == "USA");

            //多条件
            //var list1 = list.Where(c => c.Country == "USA" || c.Country == "Canada");

            //单列或者多列查询
            //var list1 = list.Select(c =>
            //new CustomerModel { CompanyName = c.CompanyName, ContactName = c.ContactName });

            ViewData.Model = list1;
            return View();
        }
    }
}

前台代码:

@model IEnumerable<T1_EF.Models.Customers>
@*@model IEnumerable<T1_EF.ViewModels.CustomerModel>*@
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>FuncTionIndex</title>
</head>
<body>
    <div>
        <table border="1">
            <tr>
                <td>联系人姓名</td>
                <td>客户公司</td>
                <td>客户属国</td>
            </tr>
            @foreach (var item in Model)
            {
                <tr>
                    <td>@item.ContactName</td>
                    <td>@item.CompanyName</td>
                    <td>@item.Country</td>
                </tr>
            }
        </table>
    </div>
</body>
</html>

显示效果:

End

原文地址:https://www.cnblogs.com/LeeSki/p/12261837.html

时间: 2024-11-12 03:30:42

MVC初体验-EF查询(Lambda的用法)(18)的相关文章

MVC初体验-EF系列(CRUD)(20)

数据库数据:Northwind中的Region表 Region类是根据Region表自动生成的 后台代码: using System.Data.Entity; using System.Data.Entity.Migrations; using System.Linq; using System.Web.Mvc; using T1_EF.Models; namespace T1_EF.Controllers { public class RegionController : Controller

MVC初体验-EF系列(总结)(23)

注意,增加,修改,删除的状态最终还是使用的状态版的,本质都是把数据附加到上下文,然后进行修改: 导航属性根据1对多或者多对1的关系,在生成类中的属性会分别生成一个集合属性或者一个标量属性: 是否禁用延时加载取决于数据量是否很大,数据变化是否十分频繁 End 原文地址:https://www.cnblogs.com/LeeSki/p/12267235.html

ASP.NET MVC学习---(五)MVC初体验

经过之前n多的铺垫 我们已经大概了解了这个姓m名vc的家伙了 那么今天我们就来体验一把 怎么体验呢? 就来做一个小例子吧~ mvc增删改查的例子 数据库还是之前我们的老朋友 关系图: 表中的数据已填好 T_Users 将就着用着吧,哈哈 现在要求对T_Users表进行增删改查 开搞~ 回到之前新建的mvc项目 在Controllers文件夹下新建一个名为Home的空控制器 当浏览器请求Home下面的Index方法的时候返回什么? 当然是主页面啦 这里我们的主页面就是显示T_Users数据列表 代

MVC初体验-Razor和HtmlHelper(4)

1 动态改变路由规则,HtmlHelper的 如果使用了路由器中的默认路由,那么在浏览器的URL不会显式显示Controller的名字和Action的名字 输出 布表单 总结:本人感觉除了路由引用的可以使用HtmlHelper方法 其余的像布表单.一些其他的不建议使用这种混编代码. 确实增加了维护难度,并且前后端耦合了. 视图的数据从哪来?从行为来 怎么从行为向视图传数据,通过ViewData中的键值对 ViewBag是ViewData的简写,使用起来完全一样,实际就是一种动态字典类型 使用时在

MVC初体验-过滤器(10)

主要有4中过滤器: 1.Authorization  身份验证过滤器 理解身份验证过滤器和无侵入式开发: 假如我这里有学生和教室两个对象,学生进入教室需要进行身份验证,如果在A学生上增加验证,那么在代码层面就构成了侵入式开发,需要修改学生A的代码,如果多了一个学生C,那么又需要继续增加验证代码,不合适: 如果在教室对象上增加身份验证代码,如果新增了教室D,那么身份验证又需要重写,同时也构成了侵入式开发: 所以最好的方案是不修改学生和教室,在它们中间加入一层中间验证,哪个教室需要身份验证,就给它加

ASP.NET EF(LINQ/Lambda查询)

EF(EntityFrameWork) ORM(对象关系映射框架/数据持久化框架),根据实体对象操作数据表中数据的一种面向对象的操作框架,底层也是调用ADO.NET ASP.NET MVC 项目会自动导入MVC程序集,因为默认.NET环境(GAC)中没有这个程序集 1 create database MyFirstEF 2 on primary 3 ( 4 name='MyFirstEF.mdf', 5 --修改为自己电脑上SQL DB路径 6 filename='E:\ProgramMSSQL

Java8初体验(1):lambda表达式语法

原文出处: 一冰_天锦 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化.本文是该系列的第一篇,主要介绍Java8对屌丝码农最有吸引力的一个特性—lambda表达式. java8的安装 工欲善其器必先利其器,首先安装JDK8.过程省略,大家应该都可以自己搞定.但是有一点这里强调一下(Windows系统):目前我们工作的版本一般是java 6或者java 7,所以很多人安

EF 框架初体验

使用 EF 查询数据 直观的方式是操作DBContext 对象 包含的各种DBset<T>类型的集合 查询数据 where()方法用于条件查询,参数为lamda表达式 SingOrDefault()方法返回一个对象,如果返回多个对象则报错,没有对象则返回null 返回多个对象则可以调用ToList()方法转化List集合 添加数据 实列化一个对象,调用entity.对象.Add()方法, 然后savechange()保存修改 savechange()方法返回一个int 如果大于0 那么对数据库

Java8初体验(二)Stream语法详解

原文链接:http://ifeve.com/stream/ 1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel aggregate operations. 我们来解读一下上面的那句话: Stream是元素的集合,这点让Stream看起来用些类似Iterator: 可以支持顺序和并行的对原Stream进行汇聚的操作: 大家可以把Stream当成一个高级版本的