MVC里模型常用的一些操作
学习也是做买卖,归根到底还是学习成本的问题。
下面把微软集合类型的增删改查稍微罗列一下,大家看看它能带来的便利,和你要学的新东西,还有风险(纯粹的数据操作,不用框架,风险其实不大)相比,是否值得。来决定是跳过,还是了解,还是精研。(建议敲一遍了解一下,以后写的东西如果频繁遇到数据的小操作,可以回来翻翻,研究研究,多个选择)
1、增删改查
var a = new List<Person>();
Person user;
a.Add(new Person() { Name = "zs", Nl = });
a.Add(new Person() { Name = "ls", Nl = });
a.Add(new Person() { Name = "ww", Nl = });
user = (from x in a where x.Name == "zs" select x).Single();
////a.Remove(user);
//user.Nl=25; foreach (var item in a)
{
Console.WriteLine(item.Name + "\t" + item.Nl); }
Console.ReadKey();
说明:
(1)第6行括号里是一种微软筛选数据的语法,叫做Linq。Linq还是有点东西的,绝不像例子里写的那么简单。有关这种语法,可以自己搜着看看,了解一下。
(2)single方法的作用是,从集合(由一条完全相同的记录重复构成)中转化出一条记录,有点像类型转换,从多条变一条。如果原集合含有多条不相同的数据,则报错。
(3)第7行会删除查到的数据,第8行会修改查到的数据。如果是真正的数据模型,记得要用savechanges存入库。
(4)批量删除可以用RemoveAll方法,和lambda表达式一起用。
(5)批量修改可以用下面的代码:
var guys = from x in a where x.Nl > select x;
foreach (var item in guys)
{
item.Nl++;
}
2、不用Linq,这一系列有些扩展方法,比如:
Where,Max,Select,Sum,Any,Average,All,Concat等
都是针对IEnumerable的对象进行扩展的
也就是说,只要实现了IEnumerable接口,就可以使用这些扩展方法(List和Dbset都实现了的)
来看看这段代码:
List<int> arr = new List<int>() { , , , , , , };
var result = arr.Where(a => { return a > ; }).Sum();
Console.WriteLine(result);
Console.ReadKey();
这段代码中,用到了两个扩展方法。
<1>
Where扩展方法,需要传入一个Func<int,bool>类型的泛型委托
这个泛型委托,需要一个int类型的输入参数和一个布尔类型的返回值
我们直接把a => { return a > 3; }这个lambda表达式传递给了Where方法
a就是int类型的输入参数,返回a是否大于3的结果。
<2>
Sum扩展方法计算了Where扩展方法返回的集合的和。
另外的例子:
var a = new List<Person>();
a.Add(new Person() { Name = "zs", Nl = });
a.Add(new Person() { Name = "ls", Nl = });
a.Add(new Person() { Name = "ww", Nl = });
var result = a.Where(b => b.Nl > ).Select(b=>b.Nl).Sum();//所有人18岁以上的人,年龄求和。
Console.WriteLine(result);
Console.WriteLine(a.Any(x => x.Nl < ));// 如果集合中有任何一个元素满足该条件就返回true
Console.WriteLine(a.Where(b => b.Nl > ).All(x=>x.Nl < ));// 如果集合中所有元素都满足该条件,返回true
foreach (var item in a.Where(b => b.Nl > ).Concat(a))//Concat用来连接两个集合
{
Console.WriteLine(item.Name + "\t" + item.Nl);
}
Console.ReadKey();
可以自己运行一下,看看效果。
需要注意的是,any的用法以上面的注释为准,vs的提示(所有元素都满足条件才返回true)是错的。
MVC里模型常用的一些操作的更多相关文章
- Django之模型层:表操作
目录 Django之模型层:表操作 一.ORM简介 django测试环境搭建 Django终端打印SQL语句 二 单表操作 2.1 按步骤创建表 2.2记录 三.多表操作 1 创建模型 2 添加.删除 ...
- ASP.NET MVC+EF5 开发常用代码
Asp.Net Mvc,EF 技术常用点总结 1.Asp.Net MVC a)获得当前控制器名和当前操作的名称(action) 1.Action 中 RouteData.Values[" ...
- ASP.NET MVC数组模型绑定
在ASP.NET MVC中使用Razor语法可以在视图中方便地展示数组,如果要进行数组模型绑定,会遇到索引断裂问题,如下示例: <input type="text" name ...
- MVC数组模型绑定
ASP.NET MVC数组模型绑定 在ASP.NET MVC中使用Razor语法可以在视图中方便地展示数组,如果要进行数组模型绑定,会遇到索引断裂问题,如下示例: <input type=& ...
- ---web模型 --mvc和模型--struts2 入门
关于web模型: 早期的web 应用主要是静态页丽的浏览〈如新闻的制监),随着Internet的发展,web应用也变得越来越复杂,不仅要 和数据库进行交互 ,还要和用户进行交互,由此衍生了各种服务器端 ...
- 探索ASP.NET MVC5系列之~~~4.模型篇---包含模型常用特性和过度提交防御
其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...
- ASP.NET Core 中文文档 第四章 MVC(4.2)控制器操作的路由
原文:Routing to Controller Actions 作者:Ryan Nowak.Rick Anderson 翻译:娄宇(Lyrics) 校对:何镇汐.姚阿勇(Dr.Yao) ASP.NE ...
- MVC 编程模型及其变种
MVC 编程模型及其变种 MVC全称是Model View Controller, 这是一个模型(model)-查看(view)-调节器(controller)缩写,这是通过通用的编程模型非.MVC当 ...
- TP5常用命令符操作
ThinkPHP5常用命令符操作 1. 模块自动生成指令: 默认会读取应用目录application下面的build.php作为自动 生成的定义文件,如果你的定义文件位置不同,则需要使用 ...
随机推荐
- Python元组与字符串操作(8)——三数排序多种实现
练习 依次接收用户输入的3个数,排序后打印 1.转换int后,判断大小排序,使用分支结构完成 num1 = [] for i in range(3): num1.append(int(input('& ...
- 201871010128-杨丽霞《面向对象程序设计(java)》第十周学习总结
201871010128-杨丽霞<面向对象程序设计(java)>第十周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...
- 201871020225-牟星源《面向对象程序设计(java)》第十四周学习总结
201871020225-牟星源<面向对象程序设计(java)>第十四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- SLAM:
十四讲: 传感器约束了外部环境 测到的通常都是一些间接的物理量而不是直接的位置数据 只能通过一些间接的手段,从这些数据推算自己的位置 好处是没有对环境提出任何要求 camera:单目.双目.深度 Mo ...
- Java System.getProperty vs System.getenv
转自:https://www.baeldung.com/java-system-get-property-vs-system-getenv 1. Introduction The package ja ...
- ACE网络编程:IPC SAP、ACE_SOCKET和TCP/IP通信实例
socket.TLI.STREAM管道和FIFO为访问局部和全局IPC机制提供广泛的接口.但是,有许多问题与这些不统一的接口有关联.比如类型安全的缺乏和多维度的复杂性会导致成问题的和易错的编程.ACE ...
- 2.Python学习之路
这里主要更新Python每个部分知识点的详细的目录...(知识点目录) Python基础 一.计算机基础 二.Python基础 三.函数 四.常用模块 五.模块和包 六.面向对象 Python进阶 七 ...
- JavaScript (JS)常用方法
被按的按键的 unicode 是? <html> <head> <script type="text/javascript"> function ...
- java8之行为参数化
今天看到一块switch代码,觉得又臭又长,可以优化一下,只需要将函数名作为入参进行改造,有点类似于策略模式. 以下是使用Java8进行行为参数化的简单案例: User.java import lom ...
- linux下发布项目
查看端口