最佳答案
我有一个函数,在该函数中我得到一个 id 列表,并且我需要返回一个与 id 相关联的描述相匹配的列表。例如:
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 子句包含 codeIds 参数中的所有值) :
Select CodeId, Description FROM CodeTable WHERE CodeId IN ('1a','2b','3')
在 Linq to Sql 中,我似乎找不到与“ IN”子句等价的内容。到目前为止,我发现最好的(不起作用的)是:
var foo = from codeData in channel.AsQueryable<CodeData>()
where codeData.CodeId == "1" || codeData.CodeId == "2"
select codeData;
问题在于,我不能动态地为 linq 到 sql 生成一个“ OR”子句列表,因为它们是在编译时设置的。
如何使用 Linq to Sql 来完成检查列是否在动态值列表中的 where 子句?