請用LINQ技術輸出數(shù)組中所有大于100的偶數(shù)項
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的偶數(shù)項:{0}", m)
}
分析
- 本題解答中應用了LINQ査詢表達式。
- 査詢表達式是使用聲明性査詢語法編寫的,它可以使用最少的代碼對數(shù)據(jù)源執(zhí)行復雜的篩選、排序和分組操作。
- 使用相同的基本査詢表達式模式來査詢和轉換各種數(shù)據(jù)源的數(shù)據(jù),開發(fā)效率以及代碼重用性都會提高很多。從查詢表達式的語言上看,非常類似于SQL查詢句。
- var是C#的特性,可以更方便地定義變量,在編譯時編譯器將變量自動定義為結果集對象實際的數(shù)據(jù)類型。
- 實際上,LINQ的查詢表達式所返回的結果集是一個實現(xiàn)了IEnumerable<T>接口的對象,根據(jù)表達式的不同,其對象類型也不同,這些類型都位于System.Query命名空間。
- 編程者很多時候并不需要知道結果集具體的類型,很顯然,用var來定義引用結果集的變量類型再合適不過,并且大大簡化了代碼。
- 同樣,在遍歷輸出子項時,foreach語句中的下項類型也可以用var來定義,這樣,進一步增加了代碼的重用性。
- 在查詢表達式中,有一個沒有定義的變量n,該變量用于代表num中符合條件的子項,如果編程者愿意,完全可以用其他自定義的合法標識符代替n。
ExecuteNonQuery方法和ExecuteScalar方法有何區(qū)別
-
ExecuteNonQuery()執(zhí)行命令對象的SQL語句,返回一個int類型變量,如果SQL語句是對數(shù)據(jù)庫的記錄進行操作(如記錄的增加、刪除和更新),那么方法將返回操作所影響的記錄條數(shù)。 -
ExecuteScalar()執(zhí)行命令對象的SQL語句,如果SQL語句是SELECT查詢,則僅僅返回查詢結果集中的第1行第1列,而忽略其他的行和列。該方法所返回的結果為object類型,在使用之前必須強制轉換為所需的類型。如果SQL語句不是SELECT查詢,則返回結果沒有任何作用。
描述DataSet的特點
解答
- 處理脫機數(shù)據(jù),在多層應用程序中很有用。
- 可以在任何時候査看DataSet中任意行的內容,允許修改查詢結果的方法。
- 處理分級數(shù)據(jù)。
- 緩存更改。
- XML的完整性DataSet對象和XML文檔幾乎是可互換的。
分析
- DataSet是ADO.NET的核心概念,可以把DataSet當成服務器內存中的數(shù)據(jù)庫。
- DataSet是不依賴于數(shù)據(jù)庫的獨立數(shù)據(jù)集合,所謂獨立,就是說即使斷開數(shù)據(jù)源連接,或者關閉數(shù)據(jù)庫后DataSet依然是可用的。
- DataSet在內部是用XML來描述數(shù)據(jù)的,由于XML是與平臺、語言無關的數(shù)據(jù)描述語言,所以DataSet實際可以容納具有復雜關系的數(shù)據(jù)。*