2016-11-30 9 views
15

मैं एक Linq अभिव्यक्तिकरता है सी # 7 LINQ भाव में tuples deconstruct करने

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

यहाँ के अंदर एक टपल deconstruct करने के लिए कोशिश कर रहा हूँ एक टपल लौटने विधि का एक हस्ताक्षर की अनुमति

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

लेकिन यह एक वैध वाक्यविन्यास नहीं है। मैं केवल विखंडन के बिना टपल मूल्यों पहुँच सकते हैं:

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

वहाँ यह deconstruct करने के लिए एक उचित तरीके से है या यह Linq भाव अंदर समर्थित नहीं है?

+0

दुर्भाग्य से सी # 7 के साथ LINQ एकीकरण बहुत अच्छी तरह से सोचा नहीं गया था। –

उत्तर

11

ऐसा नहीं लगता है। https://github.com/dotnet/roslyn/issues/6877

संपादित

अंक LINQ क्वेरी में करने के लिए dotnet/csharplang#355

+1

दरअसल, [यह वर्तमान रोसलिन गुरु के साथ संकलन नहीं है] (http://tryroslyn.azurewebsites.net/#b:master/f:r/K4Zwlgdg5gBAygTxAFwKYFsB0AZSBHAbgCgiBjAGwEMQQYARMU5MAewkoCcEB1FjgEyIBvIjDEwAbizD8YAWQAUDJq3ZdeAgNoBdGAHc+/EAEpR4keMuTOMDqhDByyGAF4YAMw4t0+wzEi+AiBmVqHkqM4KfGBQkJTkADQwyByUECBUzGzGrjAAwmwSqBzICgYCpqFVIKjhTDDRsezkxJYAviEwnQooHJCwAPJ9TfFJvf0wACqp6ZmqOQUQRSVKjFlqPH7l/JXiAJAuAHww/KjulI6lPSn9YzfQxsbEbUA==)। – svick

+0

धन्यवाद। यह दुखद है कि यह अभी भी बैकलॉग पर है – Random

2

डीकंस्ट्रक्शन ले जाया गया में समर्थित नहीं है सी # 7.0:

GitHub पर इस के लिए एक खुला मुद्दा नहीं है।

डीकनस्ट्रक्शन के केवल तीन रूपों ने इसे सी # 7.0 (असाइनमेंट में निर्णायक, "फोरैच" लूप में और "लूप" में बनाया है) में बनाया है। लेकिन जब भाषा डिजाइन समिति ने उन सभी संभावित स्थानों पर विचार किया जो चर घोषित करते हैं (और इस प्रकार निर्णायकता के लिए उम्मीदवार होंगे) और उन्हें प्राथमिकता दी जाती है, तो "चलो" (और संभवतः "से") खंडों में विघटन अगले पंक्ति में थे।

अगर आपको लगता है कि यह उपयोगी होगा तो कृपया https://github.com/dotnet/csharplang/issues/189 पर एक नोट या अंगूठे छोड़ना सुनिश्चित करें।

संबंधित मुद्दे