我试图在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表达式中不支持它?
答案 0 :(得分:17)
答案 1 :(得分:5)
在C#7.0中不支持Linq查询中的解构。
只有三种形式的解构使其成为C#7.0(在分配中解构,在" foreach"循环和" for"循环)。 但是当语言设计委员会考虑所有声明变量的可能的地方(因此将成为解构的候选者)并优先考虑它们时,解构在" let" (可能"来自")条款紧随其后。
如果您觉得这样做有用,请务必在https://github.com/dotnet/csharplang/issues/189上留下备注或竖起大拇指。
答案 2 :(得分:2)
您可以执行以下操作:
public static (string Original, string Translation) Convert(string word)
{
return ("Hello", "Hello translated");
}
static void Main(string[] args)
{
List<string> words = new List<string>();
words.Add("Hello");
var result = from word in words
select Convert(word).Translation;
Console.WriteLine("Hello, world!" + result.FirstOrDefault());
}