我正在学习如何使用LINQ并且在某一方面遇到麻烦。
我正在构建一个简单的货币转换器。我有一个List<string> desiredCurrencies
,其中包含Currency对象及其名称,代码和实际速率(从XML文件解析)。
现在,让我们说,我想获得特定货币。我的"EUR", "USD", "CHF"
包含以下货币代码var results = from c in currencyList
join dc in desiredCurrencies on c.Code equals dc
select new { c.Name, c.Code, c.Rate };
。然后我进行查询:
List<Currency> desiredCurrencies
但查询结果为空。
我知道,如果创建一个新的... on c.Code equals dc.Code ...
,然后使"EUR', "USD", "CHF"
成功。但这可能只是一个带有货币代码的字符串列表,将它们全部加入并获得结果吗?
我还要感谢一个如何使用Lambda表达式编写此查询的示例,因为我还不熟悉它们。
编辑:好吧,我在代码中发现了一个错误。基本上,XML解析器没有解析所有货币,而代码s = '1456208278 Hello world start'
s[s.index(' ') + 1:]
的货币却丢失了。很抱歉打扰,但感谢您的帮助和Lambda表达!
答案 0 :(得分:0)
使用lambda表达式:
var results = currencyList.Where(c=>desiredCurrencies.Contains(c.Code))
.Select(c=>new {c.Name, c.Code, c.Rate});
答案 1 :(得分:0)
var results = from c in currencyList
where desiredCurrencies.Contains( c.Code )
select new { c.Name, c.Code, c.Rate };
在方法语法中,它将是:
var results = currencyList
.Where( c => desiredCurrencies.Contains( c.Code ) )
.Select( c => new { c.Name, c.Code, c.Rate });