请用LINQ技术输出数组中所有大于100的偶数项
int[] MyNum = new int []{100,20,2,8,4,104,1,21,101,201,202}
解答
// 将制定的查询表达式结果集赋值给newnum变量
var newnum = from n in num
where n % 2 == 0 && n > 100
select n;
foreach (var m in newnum)
{
console.WriteLine("小于100的偶数项:{0}", m)
}
分析
- 本题解答中应用了LINQ査询表达式。
- 査询表达式是使用声明性査询语法编写的,它可以使用最少的代码对数据源执行复杂的筛选、排序和分组操作。
- 使用相同的基本査询表达式模式来査询和转换各种数据源的数据,开发效率以及代码重用性都会提高很多。从查询表达式的语言上看,非常类似于SQL查询句。
- var是C#的特性,可以更方便地定义变量,在编译时编译器将变量自动定义为结果集对象实际的数据类型。
- 实际上,LINQ的查询表达式所返回的结果集是一个实现了IEnumerable<T>接口的对象,根据表达式的不同,其对象类型也不同,这些类型都位于System.Query命名空间。
- 编程者很多时候并不需要知道结果集具体的类型,很显然,用var来定义引用结果集的变量类型再合适不过,并且大大简化了代码。
- 同样,在遍历输出子项时,foreach语句中的下项类型也可以用var来定义,这样,进一步增加了代码的重用性。
- 在查询表达式中,有一个没有定义的变量n,该变量用于代表num中符合条件的子项,如果编程者愿意,完全可以用其他自定义的合法标识符代替n。
ExecuteNonQuery方法和ExecuteScalar方法有何区别
-
ExecuteNonQuery()
执行命令对象的SQL语句,返回一个int类型变量,如果SQL语句是对数据库的记录进行操作(如记录的增加、删除和更新),那么方法将返回操作所影响的记录条数。 -
ExecuteScalar()
执行命令对象的SQL语句,如果SQL语句是SELECT查询,则仅仅返回查询结果集中的第1行第1列,而忽略其他的行和列。该方法所返回的结果为object类型,在使用之前必须强制转换为所需的类型。如果SQL语句不是SELECT查询,则返回结果没有任何作用。
描述DataSet的特点
解答
- 处理脱机数据,在多层应用程序中很有用。
- 可以在任何时候査看DataSet中任意行的内容,允许修改查询结果的方法。
- 处理分级数据。
- 缓存更改。
- XML的完整性DataSet对象和XML文档几乎是可互换的。
分析
- DataSet是ADO.NET的核心概念,可以把DataSet当成服务器内存中的数据库。
- DataSet是不依赖于数据库的独立数据集合,所谓独立,就是说即使断开数据源连接,或者关闭数据库后DataSet依然是可用的。
- DataSet在内部是用XML来描述数据的,由于XML是与平台、语言无关的数据描述语言,所以DataSet实际可以容纳具有复杂关系的数据。*