想运行本程序,请先做好准备工作,请参考:Linq学习__00__准备工作
(1)新建HomeController。
更新HomeController的Index方法如代码1.1
代码1.1
#region 数据源是数组
/// <summary>
/// 数据源是数组
/// from,where,select,Count(),Max(),Average(),First(),ToList(),ToArray(),
/// </summary>
/// <returns></returns>
public ActionResult Index()
{
int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };//数组隐式支持泛型 IEnumerable(T) 接口,所有可以当作可查询数据源
//查询所有偶数
var numQuery = from num in numbers
where (num % 2) == 0
select num;
//查询变量numQuery本身只是存储查询命令语句而已。实际的查询执行会延迟到查询变量被循环访问时发生。此概念称为“延迟执行”,
//Count()、Max()、Average() 和 First() 就属于此类查询,但他们不用显示的foreach 语句,这些类型的查询返回单个值,而不是 IEnumerable 集合。
ViewBag.num = numQuery;//使用ViewBag向页面传值
//用Count()函数查询所有奇数数的个数
var numQuery1 = (from num in numbers
where (num % 2) == 1
select num).Count();
ViewBag.count = numQuery1;
//用Max()函数查询小于4的数中最大的那个数
var numQuery2 = (from num in numbers
where num < 4
select num).Max();
ViewBag.Max = numQuery2;
//用Average()函数所有数平均值
var numQuery3 = (from num in numbers
select num).Average();
ViewBag.Average = numQuery3;
//用First()函数查询大于等于5的数中的第一个数
var numQuery4 = (from num in numbers
where num >= 5
select num).First();
ViewBag.First = numQuery4;
//若要强制立即执行任意查询并缓存其结果,可以调用 ToList(TSource) 或 ToArray(TSource) 方法。
//用ToList强制立即执行查询并缓存其结果(查询不等于2数)
var numQuery5 = (from num in numbers
where num != 2
select num).ToList();
ViewBag.ToList = numQuery5;
//用ToArray强制立即执行查询并缓存其结果(查询不等于6数)
var numQuery6 = (from num in numbers
where num != 6
select num).ToArray();
ViewBag.ToArray = numQuery6;
return View();//返回View视图
}
#endregion 数据源是数组
(2)添加视图Index.cshtml,代码如代码1.2
代码1.2
<div style="background-color: Yellow;">
数据源是: 0, 1, 2, 3, 4, 5, 6</div>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@*这是注释*@ @*循环写法一*@
<div style="background-color: Yellow;">
(1)查询所有偶数方法一</div>
@{
foreach (var i in ViewBag.num)
{
<div>@i</div>
}
}
@*循环写法一*@
<div style="background-color: Yellow;">
(1)查询所有偶数方法二</div>
@*循环写法二*@
@foreach (var i in ViewBag.num)
{
<div>@i</div>
}
@*循环写法二*@
@{
<div style="background-color: Yellow;">
(2)用Count()函数查询所有奇数数的个数 @ViewBag.count</div>
<div style="background-color: Yellow;">
(3)用Max()函数查询小于4的数中最大的那个数 @ViewBag.Max</div>
<div style="background-color: Yellow;">
(4)用Average()函数所有数平均值 @ViewBag.Average</div>
<div style="background-color: Yellow;">
(5)用First()函数查询大于等于5的数中的第一个数 @ViewBag.First</div>
<div style="background-color: Yellow;">
(6)用ToList强制立即执行查询并缓存其结果(查询不等于2数)</div>
foreach (var j in ViewBag.ToList)
{
<div>@j</div>
}
<div style="background-color: Yellow;">
(7)用ToArray强制立即执行查询并缓存其结果(查询不等于6数)</div>
foreach (var m in ViewBag.ToArray)
{
<div>@m</div>
}
}