我正在寻找像下面那样构建Lambda表达式
IQueryable<Object> queryEntity =
_db.Projects.Where(Project=>Project.Id.IN(1,2,3,4));
我在Lambda表达式中找不到任何IN
运算符。
有人有建议吗?
答案 0 :(得分:23)
var idList = new[] { 1, 2, 3, 4 };
IQueryable<Object> queryEntity =
_db.Projects.Where(Project => idList.Contains(Project.Id));
您当然可以构建idList
内联。
答案 1 :(得分:2)
运营商中没有,但有一个包含。只是颠倒你的逻辑:
IQueryable<Object> queryEntity = _db.Projects.Where(Project=>(new []{1,2,3,4}).Contains(Project.Id));
答案 2 :(得分:0)
您正在寻找IEnumerable.Contains
_db.Projects.Where(Project => list.Contains(Project.Id));
答案 3 :(得分:0)
你可以写自己的
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);
}
答案 4 :(得分:0)
pseudocode基于Anders赞成的解决方案。
StateMints示例数据:
薄荷,位置
1.O,路易斯安那州新奥尔良
2.W,西点,纽约
3.D,科罗拉多州丹佛市
到目前为止,这是我的代码:
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();