Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET-MVC4-Linq查询以选择“最大”;“供应商”;在数据库中_C#_Linq_Asp.net Mvc 4 - Fatal编程技术网

C# ASP.NET-MVC4-Linq查询以选择“最大”;“供应商”;在数据库中

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

我在一个数据库中有两个表

供应商表:供应商ID-供应商名称

产品表:ProductID-ProductName-UnitsInStock-SupplierID

如何选择单位库存量最大的供应商

这是我的密码

    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给了我一个错误。我只是删除了它,工作得很好。谢谢。我刚刚更新了我的答案,以显示如果有两个供应商拥有相同数量的库存,并且这个数量将是最大的。如果我们有两个供应商拥有相同数量的库存,会发生什么?它会产生错误吗?如果您使用我的第一个解决方案-不,它不会产生错误。。相反,它只会返回列表中库存数量最多的第一家供应商。。所以,如果有两个供应商的库存量相等。。第一个解决方案将只返回其在列表中找到的第一个供应商。。我的第二个解决方案包括所有单位库存量相等的供应商,该数量恰好是最大的。是的,我刚刚尝试生成此场景,没有发生错误,它返回了您提到的第一个供应商。非常感谢。