สมมติว่าฉันกำลังเรียกจุดสิ้นสุด 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 |
+------------------+----------------+---------+
ฉันต้องการเพิ่มอัตราแลกเปลี่ยนส่วนกลับลงในบันทึกผลลัพธ์ ดังนั้นหากฉันมีอัตราแลกเปลี่ยน USD เป็น GBP ที่ 88.45 ฉันต้องการเพิ่มบันทึกสำหรับ GBP เป็น USD ที่ 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 |
+------------------+----------------+--------+