Предположим, что я вызываю конечную точку API и получаю некоторые обменные курсы в виде DataTable. Затем я фильтрую эти обменные курсы, используя инструкцию LINQ, чтобы возвращать только те курсы, которые меня интересуют.
LINQ для фильтрации обменных курсов:
var results = exchangeRates.Rows.Cast<DataRow>()
.Where(r => r.Field<double>("Rate") > 0)
.Where(r => r.Field<string>("FromCurrency").ToUpper() == "USD")
.Select(y => new
{
FromCurrency = y.Field<string>("FromCurrency"),
ToCurrency = y.Field<string>("ToCurrency"),
ExchangeRate = y.Field<double>("Rate")
}).ToList();
Операция LINQ возвращает:
+------------------+----------------+---------+
| OriginalCurrency | TargetCurrency | Rate |
+------------------+----------------+---------+
| USD | GBP | 88.452 |
+------------------+----------------+---------+
| USD | CAD | 132.819 |
+------------------+----------------+---------+
Я хотел бы добавить к результирующим записям взаимные обменные курсы. Поэтому, если у меня обменный курс доллара США к фунту стерлингов 88,45, я хотел бы добавить запись для фунта стерлингов к доллару США 113,06. Так что в основном я меняю местами столбцы OriginalCurrency и TargetCurrency и беру обратное значение первой ставки, а затем умножаю на 10 000. У меня есть LINQ для фильтрации записей, но я не могу понять, как настроить оператор LINQ, чтобы добавить две новые записи о взаимном обменном курсе.
Желаемый результат оператора LINQ:
+------------------+----------------+--------+
| OriginalCurrency | TargetCurrency | Rate |
+------------------+----------------+--------+
| USD | GBP | 88.45 |
+------------------+----------------+--------+
| USD | CAD | 132.81 |
+------------------+----------------+--------+
| GBP | USD | 113.06 |
+------------------+----------------+--------+
| CAD | USD | 75.30 |
+------------------+----------------+--------+