14
使用查詢表達式樣式,可以輕鬆編寫let子句。我的問題是如何使用點符號樣式來編寫let子句。如何使用點符號樣式編寫let子句
使用查詢表達式樣式,可以輕鬆編寫let子句。我的問題是如何使用點符號樣式來編寫let子句。如何使用點符號樣式編寫let子句
本質上它是一個Select
(在大多數情況下),它引入了一個透明標識符 - 通過一個匿名類型封裝所有當前指定的範圍變量。例如,下面的查詢:
string[] names = { "Jon", "Mark" };
var query = from name in names
let length = name.Length
where length > 3
select name + ": " + length;
被翻譯成這樣的:
var query = names.Select(name => new { name, length = name.Length })
.Where(z => z.length > 3)
.Select(z => z.name + ": " z.length);
不要吝嗇批評你的答案(上相反我很感激),但因爲我可以使用let子句要寫更復雜的方法,並且在你的例子中,點符號已經比查詢exp對應物更可讀,我認爲這是查詢exp比點國更可取的另一種情況。我知道的另一個案例涉及編寫連接。你是否同意這種觀察?感謝您的回答。 – 2010-03-20 21:14:15
@Khnle:這可能是個人喜好的問題。在這種情況下,我更喜歡點符號的外觀。一旦你習慣了lambda語法,它很容易閱讀,更能描述實際發生的事情,並且不需要'let'語句的附加語法糖。 – 2010-03-20 22:15:03
@Khnle:是的 - 我通常會發現,引入透明標識符(包括let和join)的查詢表達式比它們的點符號等價物更具可讀性。羅伯特的權利 - 這絕對是個人喜好。 – 2010-03-20 22:46:47