C# 如何筛选DateTime字符串,无sqlserver命令
我正在做我的考试项目,我正在努力创建一个方法来返回过滤后的订单列表。我正在尝试筛选我以前使用code first变量保存在数据库中的by DateTime func,并在筛选后在WindowsForm gridview中调用该方法 我尝试了多种在互联网上看到的方法,但都不起作用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)
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")));