Позволяет ли С# 7 деконструировать кортежи в выражениях linq

Я пытаюсь деконструировать кортеж внутри выражения Linq

// somewhere inside another method
var result = from word in words
             let (original, translation) = Convert(word)
             select original

Вот подпись метода, возвращающего кортеж

(string Original, string Translation) Convert(DictionaryWord word)
{
    // implementation
}

Но это не допустимый синтаксис. Я могу получить доступ только к значениям кортежа без деконструкции:

var result = from word in words
             let result = GetWord(word, mode)
             select result.Original

Есть ли способ деконструировать его или он не поддерживается внутри выражений Linq?

Ответы

Ответ 2

Декомпозиция в запросах Linq не поддерживается в С# 7.0.

Только три формы деконструкции превратили его в С# 7.0 (деконструкция в задании, в петле "foreach" и в цикле "для" ). Но когда комитет по разработке языка рассмотрел все возможные места, которые объявили переменные (и, следовательно, были бы кандидатами на деконструкцию), и установил их приоритет, деконструкция в предложениях "пусть" (и, возможно, "от" ) была следующей в очереди.

Пожалуйста, не забудьте оставить примечание или превью на https://github.com/dotnet/csharplang/issues/189, если вы считаете, что это будет полезно.