linq 查询 有两种语法 ,前面我们说了一种,接下来说方法语法(我读着一直很绕口)
查询语法,方法语法
------------------------以下文字都是复制-----------------------------------
LINQ的优势
1、无需复杂学习过程即可上手
2、编写更少代码即可创建完整应用。
3、更快开发错误更少的应用程序。
4、无需求助奇怪的编程技巧就可合并数据源。
5、让新开发者开发效率更高。
6、任何对象或数据源都可以定制实现Linq适配器,为数据交互带来真正方便。
这种可以看这个, 这些字我都是复制的 给你们链接看看 https://blog.csdn.net/huchunfu/article/details/8245157
1、查询语法:
如:from p in Products select p;
2、方法语法:
如:Where()
OrderBy()
Select()
注意 方法语法好像也有sql语句的语法规则 比如 where 在order 前面
lists.Where(n => n.Contains("a")).OrderBy(n => n.Length).Select(n => n.ToUpper()); 可以运行
但是我把他这样就不能了
lists.OrderBy(n => n.Length).Select(n => n.ToUpper()).Where(n => n.Contains("a"));
--------------------------------分割线------------------------------------------------------
下面进入主题
1查询出所有含有a的字符串 不区分大小写
string[] list = {"AAAA","ABBBB","ABCCCC","ABCDDDD" }; //随便打的
var Quert = list
.Where(n => n.Contains("a")) //检测有没有a
.OrderBy(n => n.Length) //排序, 根据长度排序
.Select(n => n.ToLower()); //转换大小写
ViewBag.ddd = Quert; //报错在这里 然后输出
注意: var 可以变成IEnumerable 这是一个接口类型的 也可以简单的写成var
代码

public ActionResult Index() { //方法语法 string[] list = {"AAAA","ABBBB","ABCCCC","ABCDDDD" }; var Quert = list.Where(n => n.Contains("A")).OrderBy(n => n.Length).Select(n => n.ToLower()); ViewBag.ddd = Quert; return View(); }
你们看看注释 ( 懒得打了 你们了解一下,下面才是正确代码)
@item 这样子才能正确输出信息 如果不加@,不然的话 只是输出item(一个毫无意义的item字符串)

@foreach (var item in ViewBag.ddd) { <h2>@item</h2> }
这样子 就出来了
注意 LINQ方法语法,一般都是和lambda一起使用的
2 输出多个信息显示(linq查询语法和方法语法)
1 查询出所有年龄大于等于19的信息
创建一个Person 类
public class Person
{
public int Age { get; set; }
public string Name { get; set; }
public string Title { get; set; }
}
public ActionResult Index()
{
List<Person> person = new List<Person>{
new Person(){ Name="cl" , Title="my", Age=18},
new Person(){ Name="cl1" , Title="my", Age=19},
new Person(){ Name="cl2" , Title="my", Age=20}
};
// var Linq = from p in person where p.Age >= 19 select p; //LINQ查询语法
//LINQ方法语法
var Linq = person.Where(n=>n.Age>=19); // LINQ方法语法 你们自行比较
ViewBag.mes = Linq;
return View();
}
index视图
@foreach (var item in ViewBag.mes ) // 前面已经说了原因 一行语句只能写一个@
{
<h2><span>年龄:</span> @item.Age,<span>名字:</span>@item.Name</h2> // 由于是多个参数, 所以 带了参数
}
完毕, 欢迎交流!!!