我有库存表,在这里我保存所有低于10或与数组中的10相同的ProductId
public int[] OrderNow()
{
return context.Inventory.Where(u => u.Quantity <= 10).Select(i =>i.ProductId)
.ToArray();
}
我知道我有3个产品,数量低于10,当我运行调试时,我可以看到那些ID。到目前为止一切都很好。
但是当我想要检索这些产品的名称时,我只能获得这3种产品中的一种......
要获取我编写此代码的产品的名称,但它只返回一个产品名称。
public string[] ProductName()
{
var prId = OrderNow();
foreach (var p in prId)
{
return context.Products.Where(u => u.ProductId == p)
.Select(p => p.ProductName).ToArray();
// After one loop it's jumping foreach process .. I don't know why
}
return null; // I don't know what to write here, but I must to return something
}
编辑类似的问题......
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();
}
答案 0 :(得分:1)
因为你在循环中返回。因此,当循环对freq[tri]++
数组中的第一个项执行时,它只获得该产品(基本上只包含该产品的集合)并且因为您拥有prId
语句,它将被返回(退出该代码块)。不会对数组中的其余项执行您的循环迭代。
您应该使用return
方法。这允许您查询ProductId与数组中的项匹配的产品(您从OrderNow方法获得的productIds)
Contains