我正在尝试解构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表达式中不受支持?
3条答案
按热度按时间p5cysglq1#
似乎不是。
GitHub上有一个未解决的问题:https://github.com/dotnet/roslyn/issues/6877
编辑
问题移至dotnet/csharplang#355
hfyxw5xn2#
C# 7.0不支持Linq查询中的解构。
只有三种形式的解构进入了C#7.0(赋值中的解构、“foreach”循环中的解构和“for”循环中的解构),但是当语言设计委员会考虑了所有声明变量的可能位置(因此可能是解构的候选位置)并对它们进行优先排序时,“let”(可能还有“from”)子句中的解构排在了第二位。
如果您觉得https://github.com/dotnet/csharplang/issues/189有用,请务必在https://github.com/dotnet/csharplang/issues/189上留言或竖起大拇指。
h7wcgrx33#
你可以这样做: