ฉันมีฟังก์ชันที่ฉันได้รับรายการรหัสและฉันต้องการส่งคืนรายการที่ตรงกับคำอธิบายที่เชื่อมโยงกับรหัส เช่น:
public class CodeData
{
string CodeId {get; set;}
string Description {get; set;}
}
public List<CodeData> GetCodeDescriptionList(List<string> codeIDs)
//Given the list of institution codes, return a list of CodeData
//having the given CodeIds
}
ดังนั้นถ้าฉันสร้าง sql สำหรับสิ่งนี้ด้วยตัวเองฉันก็จะทำสิ่งต่อไปนี้ (โดยที่ in clause มีค่าทั้งหมดในอาร์กิวเมนต์ codeIds):
Select CodeId, Description FROM CodeTable WHERE CodeId IN ('1a','2b','3')
ใน Linq ถึง Sql ฉันไม่สามารถหาส่วนคำสั่ง "IN" ที่เทียบเท่าได้ สิ่งที่ดีที่สุดที่ฉันพบ (ซึ่งใช้ไม่ได้) คือ:
var foo = from codeData in channel.AsQueryable<CodeData>()
where codeData.CodeId == "1" || codeData.CodeId == "2"
select codeData;
ปัญหาคือฉันไม่สามารถสร้างรายการคำสั่ง "OR" แบบไดนามิกสำหรับ linq ถึง sql ได้เนื่องจากตั้งค่าในเวลาคอมไพล์
หนึ่งจะบรรลุโดยที่ประโยคที่ตรวจสอบคอลัมน์อยู่ในรายการค่าแบบไดนามิกโดยใช้ Linq to Sql ได้อย่างไร