首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Min value实体框架与ASP.NET MVC的比较

Min value实体框架与ASP.NET MVC的比较
EN

Stack Overflow用户
提问于 2018-02-19 00:54:16
回答 2查看 115关注 0票数 0

我有很多仓库,每个仓库都有一个发货时间,如何比较两个仓库并返回发货时间最短的仓库?

例如,我得到了仓库id1和id2,我需要对它们进行比较。

我试图写一个foreach来匹配这两个id,但是它没有比较,只返回了最后一次id运行的截止日期。

enter image description here

EN

回答 2

Stack Overflow用户

发布于 2018-02-19 03:13:04

我创建了一个简单的控制台应用程序来向您展示我的方法:

实体:

代码语言:javascript
复制
namespace Test
{
    class Warehouse
    {
        public int Id { get; set; }
        public int DeliveryTime { get; set; }

        public Warehouse(int id, int deliveryTime)
        {
            Id = id;
            DeliveryTime = deliveryTime;
        }
    }
}

服务:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;

namespace Test
{
    class Service
    {
        public IQueryable<Warehouse> Warehouses { get; set; }
        public Service(int quantity)
        {
            var list = new List<Warehouse>();
            var random = new Random();
            for (var i = 0; i < quantity; i++)
            {
                list.Add((new Warehouse(i, random.Next(1, 100))));
            }
            Warehouses = list.AsQueryable();
        }

        public Warehouse GetQuickestWarehouse(int a, int b)
        {
            return Warehouses.Where(w => w.Id == a || w.Id == b).OrderBy(w => w.DeliveryTime).FirstOrDefault();
        }
    }
}

Main:

代码语言:javascript
复制
using System;
using System.Linq;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            var service = new Service(100);
            var a = service.Warehouses.FirstOrDefault(w => w.Id == 1);
            var b = service.Warehouses.FirstOrDefault(w => w.Id == 2);
            var min = service.GetQuickestWarehouse(a.Id, b.Id);

            Console.WriteLine($"Deliverytime for a: {a.DeliveryTime}");
            Console.WriteLine($"Deliverytime for b: {b.DeliveryTime}");
            Console.WriteLine($"Quickest Warehouse has Id: {min.Id} with delivery time: {min.DeliveryTime}");
            Console.ReadKey();
        }
    }
}

当然,我的实体模型中的构造函数和我的服务仅供控制台应用程序使用,并替换为您自己的数据库上下文和逻辑。希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2018-02-19 03:30:06

如果您有仓库ids,请将其添加到列表中

代码语言:javascript
复制
var Ids = new List<int>() { 1, 2 };

然后使用该列表过滤EF仓库。

或者通过OrderBy获得最低的交货日期

代码语言:javascript
复制
var lowest = db.Warehouse.Where(w=> Ids.Contains(w.Id)).OrderBy(a => a.DeliveryTime).FirstOrDefault();

或者,使用最小的日期值

代码语言:javascript
复制
var date = db.Warehouse.Min(a => a.DeliveryTime);
var lowest = db.Warehouse.FirstOrDefault(a =>  Ids.Contains(a.Id) && DateTime.Equals(a.DeliveryTime,date));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48854184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档