2011年8月3日 星期三

Pro LINQ: Language Integrated Query in C# 2008

Bear在這裡買的
amazon的參考

LINQ技術詳解(C#2008版)
作者:(美)拉特茲|譯者:程勝//朱新寧//楊萍
出版社:人民郵電
ISBN:9787115207906
出版日期:2009/07/01
頁數:606
人民幣:RMB 79 元



P.14(原文P.13)
IEnumerable names = arrayList.Cast().Where(n => n.Length < 7);

Bear: 這的例子是用 IEnumerable的擴充功能,但不只是可以這樣用,一般的LINQ運算式及表達式也可以這樣用。
ex: IEnumerable s = from a in xxx.Cast select a

P.14(原文P.13)
這兩個操作符之間的區別就是,Cast操作符將把集合中的每個元素轉換為為將要放到輸出序列中的指定類型,如果集合中有一個數據類型不能被轉換為指定的類型,則將會產生一個異常。而 OfType 操作符將只把可以被轉換為指定類型的那些元素放到輸出序列中。

The difference between the two operators is that the Cast operator will attempt to cast every element in the collection to the specified type to be put into the output sequence. If there is a type in the collection that cannot be cast to the specified type, an exception will be thrown. The OfType operator will only attempt to put those elements that can be cast to the type specified into the output sequence.

P.15(原文P.14)
注意這個例子,null在執行 s.Length 時,會有exception

string[] strings = { "one", "two", null, "three" };

Console.WriteLine("Before Where() is called.");
IEnumerable ieStrings = strings.Where(s => s.Length == 3);

P.16(原文P.15)
這意味著生成的 DataContext 類中包含一些非常有用的內置功能。比如以 TextWriter 對象命名的Log(日誌)。

When working with LINQ to SQL, don’t forget that the database class that is generated by SQLMetal inherits from System.Data.Linq.DataContext. This means that your generated DataContext class has some useful built-in functionality, such as a TextWriter object named Log.

Bear: 看起來好像不錯玩,可以試試看。