[英]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.