請用LINQ技術(shù)輸出數(shù)組中所有大于100的偶數(shù)項(xiàng)
int[] MyNum = new int []{100,20,2,8,4,104,1,21,101,201,202}
解答
// 將制定的查詢表達(dá)式結(jié)果集賦值給newnum變量
var newnum = from n in num
where n % 2 == 0 && n > 100
select n;
foreach (var m in newnum)
{
console.WriteLine("小于100的偶數(shù)項(xiàng):{0}", m)
}
分析
- 本題解答中應(yīng)用了LINQ査詢表達(dá)式。
- 査詢表達(dá)式是使用聲明性査詢語法編寫的,它可以使用最少的代碼對數(shù)據(jù)源執(zhí)行復(fù)雜的篩選钞螟、排序和分組操作巨坊。
- 使用相同的基本査詢表達(dá)式模式來査詢和轉(zhuǎn)換各種數(shù)據(jù)源的數(shù)據(jù),開發(fā)效率以及代碼重用性都會提高很多脸候。從查詢表達(dá)式的語言上看,非常類似于SQL查詢句。
- var是C#的特性飒硅,可以更方便地定義變量,在編譯時(shí)編譯器將變量自動定義為結(jié)果集對象實(shí)際的數(shù)據(jù)類型作谚。
- 實(shí)際上三娩,LINQ的查詢表達(dá)式所返回的結(jié)果集是一個實(shí)現(xiàn)了IEnumerable<T>接口的對象,根據(jù)表達(dá)式的不同妹懒,其對象類型也不同雀监,這些類型都位于System.Query命名空間。
- 編程者很多時(shí)候并不需要知道結(jié)果集具體的類型眨唬,很顯然会前,用var來定義引用結(jié)果集的變量類型再合適不過,并且大大簡化了代碼匾竿。
- 同樣瓦宜,在遍歷輸出子項(xiàng)時(shí),foreach語句中的下項(xiàng)類型也可以用var來定義岭妖,這樣临庇,進(jìn)一步增加了代碼的重用性反璃。
- 在查詢表達(dá)式中,有一個沒有定義的變量n假夺,該變量用于代表num中符合條件的子項(xiàng)淮蜈,如果編程者愿意,完全可以用其他自定義的合法標(biāo)識符代替n已卷。
ExecuteNonQuery方法和ExecuteScalar方法有何區(qū)別
-
ExecuteNonQuery()
執(zhí)行命令對象的SQL語句梧田,返回一個int類型變量,如果SQL語句是對數(shù)據(jù)庫的記錄進(jìn)行操作(如記錄的增加侧蘸、刪除和更新)柿扣,那么方法將返回操作所影響的記錄條數(shù)。 -
ExecuteScalar()
執(zhí)行命令對象的SQL語句闺魏,如果SQL語句是SELECT查詢未状,則僅僅返回查詢結(jié)果集中的第1行第1列,而忽略其他的行和列析桥。該方法所返回的結(jié)果為object類型司草,在使用之前必須強(qiáng)制轉(zhuǎn)換為所需的類型。如果SQL語句不是SELECT查詢泡仗,則返回結(jié)果沒有任何作用埋虹。
描述DataSet的特點(diǎn)
解答
- 處理脫機(jī)數(shù)據(jù),在多層應(yīng)用程序中很有用娩怎。
- 可以在任何時(shí)候査看DataSet中任意行的內(nèi)容搔课,允許修改查詢結(jié)果的方法。
- 處理分級數(shù)據(jù)截亦。
- 緩存更改爬泥。
- XML的完整性DataSet對象和XML文檔幾乎是可互換的。
分析
- DataSet是ADO.NET的核心概念崩瓤,可以把DataSet當(dāng)成服務(wù)器內(nèi)存中的數(shù)據(jù)庫袍啡。
- DataSet是不依賴于數(shù)據(jù)庫的獨(dú)立數(shù)據(jù)集合,所謂獨(dú)立却桶,就是說即使斷開數(shù)據(jù)源連接境输,或者關(guān)閉數(shù)據(jù)庫后DataSet依然是可用的。
- DataSet在內(nèi)部是用XML來描述數(shù)據(jù)的颖系,由于XML是與平臺嗅剖、語言無關(guān)的數(shù)據(jù)描述語言,所以DataSet實(shí)際可以容納具有復(fù)雜關(guān)系的數(shù)據(jù)嘁扼。*