Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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# 如何筛选DateTime字符串,无sqlserver命令_C#_String_Datetime_Filtering_Iqueryable - Fatal编程技术网

C# 如何筛选DateTime字符串,无sqlserver命令

C# 如何筛选DateTime字符串,无sqlserver命令,c#,string,datetime,filtering,iqueryable,C#,String,Datetime,Filtering,Iqueryable,我正在做我的考试项目,我正在努力创建一个方法来返回过滤后的订单列表。我正在尝试筛选我以前使用code first变量保存在数据库中的by DateTime func,并在筛选后在WindowsForm gridview中调用该方法 我尝试了多种在互联网上看到的方法,但都不起作用 public IQueryable<Order> GetOrderFiltered(IQueryable<Order> OrdersQuery, Order order)

我正在做我的考试项目,我正在努力创建一个方法来返回过滤后的订单列表。我正在尝试筛选我以前使用code first变量保存在数据库中的by DateTime func,并在筛选后在WindowsForm gridview中调用该方法

我尝试了多种在互联网上看到的方法,但都不起作用

    public IQueryable<Order> GetOrderFiltered(IQueryable<Order> OrdersQuery, Order order)
        {

            if (!string.IsNullOrWhiteSpace(order.Time))
            {
                OrdersQuery = OrdersQuery.Where(p => p.Time.Contains(DateTime.Today.ToString("dd/MM/yyyy HH:mm")));
            }

            var list = new List<Order>(OrdersQuery);
            return list;
        }
    }
如果有人能帮助我,我将非常感激。

公共IQueryable GetTodayOrders(IQueryable OrdersQuery)
public IQueryable<Order> GetTodayOrders(IQueryable<Order> OrdersQuery)
{
    return OrdersQuery.Where(o => o.Time >= DateTime.Today && o.Time < DateTime.Today.AddDays(1));
}
{ returnordersquery.Where(o=>o.Time>=DateTime.Today&&o.Time
Order-Order
参数看起来没用(因为您只需要今天的订单):我删除了它

我重命名了该方法以更好地表达意图

我假设,由于返回类型仍然是
IQueryable
,因此它打算直接返回,而不使用任何中间结构(
List

where条件允许涵盖从今天00:00:00到23:59:59的订单。

public IQueryable GetTodayOrders(IQueryable OrdersQuery)
{
returnordersquery.Where(o=>o.Time>=DateTime.Today&&o.Time
Order-Order
参数看起来没用(因为您只需要今天的订单):我删除了它

我重命名了该方法以更好地表达意图

我假设,由于返回类型仍然是
IQueryable
,因此它打算直接返回,而不使用任何中间结构(
List


where条件允许涵盖从今天00:00:00到23:59:59的订单。

我无法确定您希望如何对其进行过滤,但如果您希望获得时间等于给定订单的订单列表,基本上可以执行以下操作

public IQueryable<Order> GetOrderFiltered(IQueryable<Order> OrdersQuery, Order order)
{
    return OrdersQuery.Where(x => x.Time == order.Time);
}

或者用“Contains”而不是“StartsWith”

我不能确定您希望如何对其进行过滤,但如果您希望获得时间等于给定订单的订单列表,基本上可以执行以下操作

public IQueryable<Order> GetOrderFiltered(IQueryable<Order> OrdersQuery, Order order)
{
    return OrdersQuery.Where(x => x.Time == order.Time);
}

或者用“Contains”代替“StartsWith”

您希望如何过滤列表?仅在今天的时间接收订单?您可以使用linq对其进行排序,而无需sql。见此-如果您的datetime以字符串形式保存在数据库中,您应该执行以下操作:p=>p.Time.Contains(datetime.Today.ToString(“dd-MM-yyyy HH:MM”),您需要验证sql datetime格式(dd-MM-yyyyy)或(MM-dd-yyyyy),您是否有机会将
Order.Time
更改为
datetime
type?(也在您的数据库中)它是(dd-MM-yyyyyy)您希望如何过滤列表?仅在时间为今天的情况下接收订单?您可以使用linq对其进行排序,而不使用sql。请参见此内容-如果您的日期时间以字符串形式保存在数据库中,则应执行:p=>p.Time.Contains(datetime.today.ToString(“dd-MM-yyyy HH:MM”)您需要验证sql日期时间格式(dd-MM-yyyyy)或(MM-dd-yyyyyy)您是否有机会将
订单时间
更改为
日期时间
类型?(也在数据库中)它是(dd-MM-yyyy)
class Program
{
    public class Order
    {
        public Order(int id, string time)
        {
            this.Id = id;
            this.Time = time;
        }

        public int Id { get; set; }
        public string Time { get; set; }
    }

    static void Main(string[] args)
    {
        List<Order> list = new List<Order>();
        list.Add(new Order(0, "1"));
        list.Add(new Order(1, "2"));
        list.Add(new Order(2, "1"));
        list.Add(new Order(3, "2"));
        list.Add(new Order(4, "1"));


        IQueryable<Order> test = GetOrderFiltered(list.AsQueryable(), new Order(121, "1"));
        // test has orders 0,2,4
    }

    public static IQueryable<Order> GetOrderFiltered(IQueryable<Order> OrdersQuery, Order order)
    {
        return OrdersQuery.Where(x => x.Time == order.Time);
    }
}
public IQueryable<Order> GetOrderFiltered(IQueryable<Order> OrdersQuery, Order order)
{
    return OrdersQuery.Where(x => x.Time == DateTime.Today.ToString("dd/MM/yyyy"));
}
return OrdersQuery.Where(x => x.Time.StartsWith(DateTime.Today.ToString("dd/MM/yyyy")));