int[] arr = new int[]{1, 3, 5, 7 ,9};
var result = from s in arr where s < 5 select s;
//from select in 为组成不可缺少的关键字
//这里通过var隐式的定义返回结果 当然我们可以指定具体的类型 iEnumable<int>
//因为我们知道数组的类型 大多数情况下可以通过var让程序自动判定返回的类型
// 其中 s 默认识别类型为int 当然我们也可以定义一个明确的类型 比如object
IEnumerable<object> result2 = from object ss in arr select ss;
foreach (int t in result) {
Console.WriteLine(t);
}
foreach (var tt in result2) {
Console.WriteLine(tt.GetType()); //int32 自动识别
}
// linq查询只是将查询语句放进临时变量中,真正的查询要在以后的循环中执行
// 这种查询方法为延迟查询 与其对立的为 立即强制查询
Console.WriteLine(result2.Count());
Console.WriteLine(result2.First());
Console.WriteLine(result2.Last());
Console.WriteLine(result2.Max());
// 以上类似这些的只能返回单个值
var result3 = (from tt in arr select tt).ToList();
Console.WriteLine(result3.GetType());
// 通过toList() toArray() 缓存结果集
Console.ReadKey(true);