2016-11-30 14 views
15

Tôi đang cố gắng để mổ xẻ một tuple bên trong một biểu thức LINQLiệu C# 7 cho phép để giải cấu trúc bản ghi trong biểu thức LINQ

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

Dưới đây là một chữ ký của phương pháp này trả về một tuple

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

Nhưng nó không phải là một cú pháp hợp lệ. Tôi chỉ có thể truy cập các giá trị bộ dữ liệu mà không cần giải mã:

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

Có cách nào đúng để giải mã hoặc không được hỗ trợ trong biểu thức LINQ không?

+0

Tích hợp LINQ không được suy nghĩ rất tốt với C# 7, thật không may. –

Trả lời

11

Dường như không.

Có một vấn đề mở cho điều này trên GitHub: https://github.com/dotnet/roslyn/issues/6877

Sửa

Issue chuyển đến dotnet/csharplang#355

+1

Thật vậy, [nó không biên dịch với các bậc thầy Roslyn hiện tại] (http://tryroslyn.azurewebsites.net/#b:master/f:r/K4Zwlgdg5gBAygTxAFwKYFsB0AZSBHAbgCgiBjAGwEMQQYARMU5MAewkoCcEB1FjgEyIBvIjDEwAbizD8YAWQAUDJq3ZdeAgNoBdGAHc+/EAEpR4keMuTOMDqhDByyGAF4YAMw4t0+wzEi+AiBmVqHkqM4KfGBQkJTkADQwyByUECBUzGzGrjAAwmwSqBzICgYCpqFVIKjhTDDRsezkxJYAviEwnQooHJCwAPJ9TfFJvf0wACqp6ZmqOQUQRSVKjFlqPH7l/JXiAJAuAHww/KjulI6lPSn9YzfQxsbEbUA==). – svick

+0

Cảm ơn bạn. Thật buồn vì nó vẫn còn tồn đọng – Random

2

Deconstruction trong các truy vấn LINQ không được hỗ trợ trong C# 7.0.

Chỉ có ba hình thức giải mã được đưa vào C# 7.0 (phân chia cấu trúc trong nhiệm vụ, trong vòng lặp "foreach" và trong vòng lặp "for"). Nhưng khi ủy ban thiết kế ngôn ngữ xem xét tất cả những nơi có thể khai báo biến (và do đó sẽ là ứng cử viên cho giải cấu trúc) và ưu tiên chúng, việc xây dựng trong mệnh đề "let" (và có thể "từ") là tiếp theo trong dòng.

Hãy đảm bảo để lại ghi chú hoặc ngón tay cái lên trên https://github.com/dotnet/csharplang/issues/189 nếu bạn cảm thấy điều này sẽ hữu ích.

Các vấn đề liên quan