簡體   English   中英

LINQ連接-通過不同“類型”參數的兩個對象

[英]LINQ join - two objects by different “type” of parameters

我正在學習如何使用LINQ,有一次遇到麻煩。

我正在構建一個簡單的貨幣轉換器。 我有一個List<Currency> currencyList ,其中包含貨幣對象及其名稱,代碼和實際匯率(從XML文件解析)。

現在,讓我們說,我想獲得特定的貨幣。 我有一個List<string> desiredCurrencies其中包含以下貨幣代碼"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 ...使... on c.Code equals dc.Code ... ,那將起作用。 但這是否可能只是具有貨幣代碼的字符串列表,將其全部加入並得到結果?

我還要感謝一個示例,該示例如何使用Lambda表達式編寫此查詢,因為我還不熟悉它們。

編輯:嗯,我在代碼中發現了一個錯誤。 基本上,XML解析器無法解析所有貨幣,而代碼為"EUR', "USD", "CHF"的貨幣則丟失了……很抱歉給您打擾,但感謝您的幫助和Lambda表達式!

使用lambda表達式:

var results = currencyList.Where(c=>desiredCurrencies.Contains(c.Code))
                          .Select(c=>new {c.Name, c.Code, c.Rate});
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 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM