Linq集成查询(关联Lambda)
- First FirstOrDefault 找到第一个符合条件的元素
- First(x =>x.Id == id) 返回第一个Id等于id的元素,如果都没有符合的,报错
- FirstOrDefault(x =>x.Id == id) 返回第一个Id等于id的元素,如果都没有符合的,返回Null
- Single SingleOrDefault
- Single() 返回第一个Id等于id的元素,如果都没有符合的,报错
- SingleOrDefault() 返回第一个Id等于id的元素,如果都没有符合的,返回Null
- Where
- Where(x=>x.Score>=80 && x.Sex==1) 查找所有成绩大于等于80,并且性别为1的所有元素 4.Select
- Select(x=>new{x.Id,x.Score}) 以新的{x.Id,x.Score}对象形式,返回新的集合
如何将增删改查的增改添加数据传输到页面
1. 在新增页面Increase.cshtml中修改为
@model Blog.Models.Blogs;
<h2>新增</h2>
<form asp-Controller="Blogs" asp-action="Increase" method="post">
<label>标题:<input asp-for="Title"/></label> <br/>
<label>内容:<input asp-for="Content"/></label> <br/>
<label>作者:<input asp-for="Author"/></label> <br/>
<button type="submit">保存</button>
</form>
2. 在BlogsController.cs中添加
[HttpPost]
public Blogs Increase(Blogs input)
{
return input;
}
-就可以添加新增到页面。但需要验证数据库是否成功,成功跳转到列表页吗,验证不通过,仍显示新增页面,并显示
-
所以单单这样,验证是不通过的,并且显示
{
"id": 0,
"title": "你好",
"content": "星期三",
"author": "哈哈"
}
完整版 (需要配合上一篇,mvc的增删改查一起)
-
BlogsController.cs
using Microsoft.AspNetCore.Mvc;
using Blog.Models;
namespace Blog.Controllers;public class BlogsController : Controller
{
public IActionResult Index()
{
return View(Db.Blogs);
}
///
/// 创建-展示新增页面
///
/// <returns></returns>
public IActionResult Increase()
{
return View();
}
///
/// 创建-保存表单结果的Action
///
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public IActionResult Increase(Blogs input)
{
// return input;// 1.验证表单数据是否可以传入 // 2.拿到传入的数据后,一般做验证,数据验证,如必填,手机号,长度,名称是否唯一 // 3.如果符合验证规则,则保存到数据库,否则提示验证不通过 // 4.如果保存数据库成功,则跳转列表页,如果验证不成功,那就仍然显示新增页面 // var maxId=Db.Blogs.First(); // var maxId=Db.Blogs.FirstOrDefault(); // var maxId=Db.Blogs.Single(x=>x.Id>0); // var maxId=Db.Blogs.SingleOrDefault(x=>x.Id>0); // double.Blogs.Add(inout) // 先通过select 拿到集合中的所有id,放在一个新的集合中返回,然后对这个返回的新的集合应用Max方法,找到其中最大值 // var blogs = Db.Blogs.Where(x => x.Title.Equals(input.Title)); // if (blogs.Count() > 0) // { // return View("create"); // } var maxId=Db.Blogs.Select(x =>x.Id).Max(); input.Id=maxId +1; Db.Blogs.Add(input); return RedirectToAction("Index"); } // 新 // 获得Id public IActionResult Redact(int id) { // 根据id找到对应的blogs,有可能为空 var blog = Db.Blogs.FirstOrDefault(x =>x.Id == id); return View(blog); } // 新 [HttpPost] public IActionResult Redact(Blogs input) { // 根据id找到对应的blogs,有可能为空 var blog = Db.Blogs.FirstOrDefault(x => x.Id == input.Id); if (blog != null) { blog.Title = input.Title; blog.Content = input.Content; blog.Author = input.Author; } return RedirectToAction("Index"); } public IActionResult Delete() { return View(); }
}
-
Index.cshtml页面
<link rel="stylesheet" href="~/css/base.css"> @model List<Blog.Models.Blogs> 增加Id 标题 内容 作者 操作 @item.Id @item.Title @item.Content @item.Author 编辑 删除 </td> </tr> }
-
Increase.cshtml页面
@model Blog.Models.Blogs;
新增
<form asp-Controller="Blogs" asp-action="Increase" method="post"> <label>标题:</label>
<label>内容:</label>
<label>作者:</label>
<button type="submit">保存</button> </form>@*注释部分
<form action="">
*@标题 : 内容 : 作者 : -
Redact.cshtml页面
@model Blog.Models.Blogs;
修改
<form asp-Controller="Blogs" asp-action="Redact" method="post">
</form> @*<label>Id:<input asp-for="Id"/></label> <br/> <label>标题:<input asp-for="Title"/></label> <br/> <label>内容:<input asp-for="Content"/></label> <br/> <label>作者:<input asp-for="Author"/></label> <br/> <button type="submit">保存</button>
<form action="">
*@标题 : 内容 : 作者 :