C# ASP.NET-MVC4-Linq查询以选择“最大”;“供应商”;在数据库中
我在一个数据库中有两个表 供应商表:供应商ID-供应商名称 产品表:ProductID-ProductName-UnitsInStock-SupplierID 如何选择单位库存量最大的供应商 这是我的密码C# ASP.NET-MVC4-Linq查询以选择“最大”;“供应商”;在数据库中,c#,linq,asp.net-mvc-4,C#,Linq,Asp.net Mvc 4,我在一个数据库中有两个表 供应商表:供应商ID-供应商名称 产品表:ProductID-ProductName-UnitsInStock-SupplierID 如何选择单位库存量最大的供应商 这是我的密码 private storeDBEntities2 db1 = new storeDBEntities2(); public ActionResult Index() { var product = db1.Products.Where(e => e
private storeDBEntities2 db1 = new storeDBEntities2();
public ActionResult Index()
{
var product = db1.Products.Where(e => e.UnitsInStock == 0);
var largestSupplier = db1.Products.GroupBy(e => e.SupplierID);
Product minimord = db1.Products.OrderBy(e => e.UnitsOnOrder).FirstOrDefault();
var supplier = // this is the query i am struggling with
AllModelsProduct all = new AllModelsProduct { Iproduct = product.ToList(), product = new Product(),largestSupplierOfTheStore = supplier,minimumOrders = minimord };
return View(all);
}
这是我的数据图片
我需要获得supplierID 345,因为我们店里有20台属于他的,这比其他供应商的5+3+0=8台要多如果您要做的就是找到数量最多的供应商
UnitsInStock
,那么这应该就行了
我创造了一个供你们观察的世界
但不管怎样,这就是:
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
List<Supply> lstSuppliers = new List<Supply>();
Supply supply1 = new Supply() { ID = 1, SupplierName = "Supplier One"};
Supply supply2 = new Supply() { ID = 2, SupplierName = "Supplier Two"};
lstSuppliers.Add(supply1);
lstSuppliers.Add(supply2);
Product product1 = new Product() {ID = 1, UnitsInStock = 3, SupplierID = 1};
Product product2 = new Product() {ID = 2, UnitsInStock = 3, SupplierID = 2};
Product product3 = new Product() {ID = 3, UnitsInStock = 5, SupplierID = 1};
List<Product> lstAllProducts = new List<Product>();
lstAllProducts.Add(product1);
lstAllProducts.Add(product2);
lstAllProducts.Add(product3);
var findSupplierId = lstAllProducts.GroupBy(x => x.SupplierID).Select(x => new{ Supplier = x.Key.ToString(), Count = x.Sum(g => g.UnitsInStock)}).OrderByDescending(x => x.Count).First().Supplier;
Console.WriteLine(findSupplierId);
Console.WriteLine(lstSuppliers.Single(x => x.ID.ToString() == findSupplierId).SupplierName);
}
}
public class Supply{
public int ID {get;set;}
public string SupplierName {get;set;}
}
public class Product{
public int ID {get;set;}
public int UnitsInStock {get;set;}
public int SupplierID {get;set;}
}
如果你所要做的就是找到拥有最多
UnitsInStock
的供应商,那么这应该可以解决问题
我创造了一个供你们观察的世界
但不管怎样,这就是:
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
List<Supply> lstSuppliers = new List<Supply>();
Supply supply1 = new Supply() { ID = 1, SupplierName = "Supplier One"};
Supply supply2 = new Supply() { ID = 2, SupplierName = "Supplier Two"};
lstSuppliers.Add(supply1);
lstSuppliers.Add(supply2);
Product product1 = new Product() {ID = 1, UnitsInStock = 3, SupplierID = 1};
Product product2 = new Product() {ID = 2, UnitsInStock = 3, SupplierID = 2};
Product product3 = new Product() {ID = 3, UnitsInStock = 5, SupplierID = 1};
List<Product> lstAllProducts = new List<Product>();
lstAllProducts.Add(product1);
lstAllProducts.Add(product2);
lstAllProducts.Add(product3);
var findSupplierId = lstAllProducts.GroupBy(x => x.SupplierID).Select(x => new{ Supplier = x.Key.ToString(), Count = x.Sum(g => g.UnitsInStock)}).OrderByDescending(x => x.Count).First().Supplier;
Console.WriteLine(findSupplierId);
Console.WriteLine(lstSuppliers.Single(x => x.ID.ToString() == findSupplierId).SupplierName);
}
}
public class Supply{
public int ID {get;set;}
public string SupplierName {get;set;}
}
public class Product{
public int ID {get;set;}
public int UnitsInStock {get;set;}
public int SupplierID {get;set;}
}
你有一些代码可以给我们看吗?看看你的表模式,你不能。您的产品表需要SupplierID外键。哪个表包含哪个供应商提供哪个产品的数据?您试图得到的结果是什么?您可以共享示例输入数据和预期输出吗?我用代码编辑了这个问题,并添加了supplierId外键.db1.Products.OrderByDescending(e=>e.UnitsOnOrder).Take(1).选择(e=>e.Supplier).FirstOrDefault();?你就不能这样做吗?你有一些代码可以给我们看吗?看看你的表模式,你不能。您的产品表需要SupplierID外键。哪个表包含哪个供应商提供哪个产品的数据?您试图得到的结果是什么?您可以共享示例输入数据和预期输出吗?我用代码编辑了这个问题,并添加了supplierId外键.db1.Products.OrderByDescending(e=>e.UnitsOnOrder).Take(1).选择(e=>e.Supplier).FirstOrDefault();?你就不能这样做吗?.toString给了我一个错误,我只是删除了它,工作得很好。谢谢你,我刚刚更新了我的答案,以显示如果你有两个供应商拥有相同数量的库存,并且这个数量将是最大的。如果我们有两个供应商拥有相同数量的库存,会发生什么?它会产生错误吗?如果您使用我的第一个解决方案-不,它不会产生错误。。相反,它只会返回列表中库存数量最多的第一家供应商。。所以,如果有两个供应商的库存量相等。。第一个解决方案将只返回其在列表中找到的第一个供应商。。我的第二个解决方案包括所有单位库存量相等的供应商,该数量恰好是最大的。是的,我刚刚尝试生成此场景,没有发生错误,它返回了您提到的第一个供应商。谢谢。toString给了我一个错误。我只是删除了它,工作得很好。谢谢。我刚刚更新了我的答案,以显示如果有两个供应商拥有相同数量的库存,并且这个数量将是最大的。如果我们有两个供应商拥有相同数量的库存,会发生什么?它会产生错误吗?如果您使用我的第一个解决方案-不,它不会产生错误。。相反,它只会返回列表中库存数量最多的第一家供应商。。所以,如果有两个供应商的库存量相等。。第一个解决方案将只返回其在列表中找到的第一个供应商。。我的第二个解决方案包括所有单位库存量相等的供应商,该数量恰好是最大的。是的,我刚刚尝试生成此场景,没有发生错误,它返回了您提到的第一个供应商。非常感谢。