2016-02-05 19 views
0

我有一个像这样定义一个元组:如何使用LINQ将Where子句添加到Tuple中以在C#中返回单个值?

List<Tuple<string, string, double>> myList 

现在我想提取“双”值时字符串1相匹配的特定值和字符串匹配2有一定的价值。我尝试过这样的事情,但没有奏效。任何提示都表示赞赏。

myList.Select(t => t.Item3).Where(t => t.Item1 = "test" && t.Item2 = "query"); 

这会将't'视为双精度型,并且抱怨double没有Item1属性。

回答

2

你已经有了一个WhereSelect向后的顺序:

myList.Where(t => t.Item1 == "test" && t.Item2 == "query") 
     .Select(t => t.Item3); 

Select转换的项目。在这种情况下,在左侧进行的枚举为Tuple<string, string, double>,右侧出现的枚举为double

此外,你已经得到了=,你的意思是...... ==

+0

我尝试这样做......的错误,现在是“”属性或索引组<字符串,字符串,双> .Item1不能被分配到,它是只读的。显然它认为'='符号意味着试图分配一个值,我用'=='替换它,错误现在是“不能隐式转换类型”System.Collections.Generic.IEnumerable '到'double'“ – Freakishly

+0

即将退出的select仍然是一个'IEnumerable '。如果你期望只有一个匹配的条目并且想要这个,你需要调用'Single()'。 –

+0

我意识到我的错误并且使用First() Single()是更好的还是可比较的?标记答案是正确的即 – Freakishly