Arrays 从数组返回值
我有库存表,这里我保存了数组中所有低于10或与10相同的ProductIdArrays 从数组返回值,arrays,asp.net-mvc,linq,Arrays,Asp.net Mvc,Linq,我有库存表,这里我保存了数组中所有低于10或与10相同的ProductId public int[] OrderNow() { return context.Inventory.Where(u => u.Quantity <= 10).Select(i =>i.ProductId) .ToArray(); } 编辑了一个类似的问题 public int[]
public int[] OrderNow()
{
return context.Inventory.Where(u => u.Quantity <= 10).Select(i =>i.ProductId)
.ToArray();
}
编辑了一个类似的问题
public int[] OrderNow()
{
return context.Inventory.Where(u => u.Quantity <= 10).Select(i =>i.DepartmentId)
.ToArray();
}
因为你回到了循环中。因此,当循环对
prId
数组中的第一个项执行时,它只得到该产品(基本上是一个只有该产品的集合),并且由于您有return
语句,它将被返回(退出该代码块)。您的循环迭代将不会对数组中的其余项执行
您应该使用Contains
方法。这允许您查询ProductId与数组中的项匹配的产品(从OrderNow方法获得的ProductId)
return
中断方法。return
退出函数。您已经返回了string[]
@DanielA.White谢谢您的回复,我应该写些什么呢?最好的猜测是您想要返回context.Products.Where(u=>prId.Contains(u.ProductId))。选择(p=>p.ProductName.ToArray()代码>是。刚刚修好了。Thanks@Shyju当我想像你回答的那样做时,我会犯错误。这次我从OrderNow()收集了数组中的departmentId,然后在我的Asp.NetUsers中我有departmentId和电子邮件。我想收集阵列中具有相同部门ID的用户电子邮件。如果你在回答问题时将产品更改为用户,这一切都是一样的。对于“Contains”的定义,我得到错误int[]不包含,并且最佳扩展方法重载“Queryable.Contains…”使用System.Linq添加
到那个类文件。@Shyju我已经在底部编辑了我的原始问题try。其中(u=>DepartmentId.Any(u.DepartmentId))
public int[] OrderNow()
{
return context.Inventory.Where(u => u.Quantity <= 10).Select(i =>i.DepartmentId)
.ToArray();
}
public string[] UserEmails()
{
var departmentIds= OrderNow(); // Gets the array of product ids
return context.Users
.Where(u => u.IsInventoryAdmin == true)
.Where(u => departmentIds.Contains(u.DepartmentId)) // Here failing
.Select(e => e.Email)
.ToArray();
}
public string[] ProductName()
{
var productIds= OrderNow(); // Gets the array of product ids
return context.Products
.Where(u => productIds.Contains(u.ProductId))
.Select(p => p.ProductName)
.ToArray();
}