2009-10-02 2 views
0

Из 51 Standard Query Operators (из которых только 42 фактически являются операторами запросов), только 24 напрямую поддерживаются Visual Basic 9 и только 11 по C# 3: Query Expression Syntax for Standard Query Operators.Какие операторы должны иметь поддержку выражений запроса LINQ?

Во многих случаях синтаксис запроса, возможно, более читабельен, чем синтаксис эквивалентного метода, особенно когда задействованы прозрачные идентификаторы. Однако эта читаемость ломается, если вам нужно комбинировать запросы и вызовы методов.

Итак, вопрос: Какие операторы запроса, текущие или гипотетические, хотели бы, чтобы ваш язык выбора поддерживался в синтаксисе выражений запроса?

ответ

0

Я хотел бы иметь use ключевое слово, которое ведет себя как его тезка связывания в F #, располагая значение, присвоенное ему в случае необходимости:

var lengths = from path in myFiles 
       use fs = File.OpenRead(path) 
       select new { path, fs.Length }; 

(я знаю, что есть и другие способы, чтобы получить длину файла , просто используйте свое воображение)

обходной описано здесь:. Using IDisposables with LINQ

0

Я не пробовал, но вы можете использовать позволить?

var lengths = from path in myFiles 
       let fs = File.OpenRead(path) 
       select new { path, fs.Length }; 
+0

Использование будет по существу версией let. Чтобы понять, почему это необходимо, подумайте над тем, как вы вызовете Dispose() для каждого FileStream, который будет открыт ваш запрос. – dahlbyk

+0

Да, версия letisable с поддержкой let будет отличной. Я ничего не знаю о том, что на данный момент, и это было бы превосходно для этого типа операции. –

Смежные вопросы