我希望构建类似下面的Lambda表达式
IQueryable<Object> queryEntity =
_db.Projects.Where(Project=>Project.Id.IN(1,2,3,4));
我在Lambda表达式中没有找到任何IN
运算符。
有人有建议吗?
我希望构建类似下面的Lambda表达式
IQueryable<Object> queryEntity =
_db.Projects.Where(Project=>Project.Id.IN(1,2,3,4));
我在Lambda表达式中没有找到任何IN
运算符。
有人有建议吗?
使用IEnumerable.Contains完成此操作。
var idList = new[] { 1, 2, 3, 4 };
IQueryable<Object> queryEntity =
_db.Projects.Where(Project => idList.Contains(Project.Id));
当然你可以内联构建idList
。
虽然没有in运算符,但是有一个contains方法。只需要反转你的逻辑:
IQueryable<Object> queryEntity = _db.Projects.Where(Project=>(new []{1,2,3,4}).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);
}
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();
IEnumerable.Contains
;EF 对“本地来源”序列允许使用的类型有限制。整数是可以的。 - user166390