我试图解构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 = Convert(word)
select result.Original是否有正确的方法来解构它,还是在Linq表达式中不支持它?
发布于 2016-11-30 22:54:11
发布于 2017-03-12 03:49:36
Linq查询中的解构在C# 7.0中不受支持。
只有三种形式的解构进入C# 7.0 (任务中的解构,在"foreach“循环中和在"for”循环中)。但是,当语言设计委员会考虑所有可能的地方来声明变量(因此将成为解构的候选)并对它们进行排序时,"let“(可能还有"from")子句中的解构就排在了第二位。
如果你觉得这会有用的话,请在https://github.com/dotnet/csharplang/issues/189上留个便条或竖起大拇指。
发布于 2020-09-30 10:55:45
你可以这样做:
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());
}https://stackoverflow.com/questions/40899649
复制相似问题