LINQ join - 两个不同“类型”参数的对象

时间:2016-02-23 11:53:51

标签: c# linq

我正在学习如何使用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表达!

2 个答案:

答案 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 });