我有一个函数,可以获取 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 to sql 的“OR”子句列表,因为它们是在编译时设置的。
如何使用 Linq to Sql 完成检查列是否位于动态值列表中的 where 子句?
Use
where list.Contains(item.Property)
或者在你的情况下:
var foo = from codeData in channel.AsQueryable<CodeData>()
where codeIDs.Contains(codeData.CodeId)
select codeData;
但你也可以用点表示法来做到这一点:
var foo = channel.AsQueryable<CodeData>()
.Where(codeData => codeIDs.Contains(codeData.CodeId));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)