我正在寻找像下面这样构建Lambda表达式
IQueryable<Object> queryEntity =
_db.Projects.Where(Project=>Project.Id.IN(1,2,3,4));
我没有在Lambda表达式中找到任何IN
运算符。
有人有建议吗?
var idList = new[] { 1, 2, 3, 4 };
IQueryable<Object> queryEntity =
_db.Projects.Where(Project => idList.Contains(Project.Id));
你当然可以内联构建idList
。
在运营商中没有,但有一个包含。只是颠倒你的逻辑:
IQueryable<Object> queryEntity = _db.Projects.Where(Project=>(new []{1,2,3,4}).Contains(Project.Id));
您正在寻找IEnumerable.Contains
_db.Projects.Where(Project => list.Contains(Project.Id));
你可以写自己的
public static bool In(this object item, IEnumerable list)
{
return list.Contains(item);
}
public static bool In(this object item, params object[] list)
{
return item.In(list);
}
pseudocode基于Anders赞成解决方案。
到目前为止这是我的代码:
List<string> mints = new List<string> { "C", "CC", "D", "M", "O", "P", "S", "W" };
var locations = StateMints.Where(p => mints.Contains(p.Mint.ToUpper())).Select(p => p.Location).ToList();