Asp.net 日期的动态Linq
我想建立动态Linq。以下是我的代码,它在一个日期内运行良好。但用户可以从日历中选择许多日期。我需要为所有选定的日期制作LinqAsp.net 日期的动态Linq,asp.net,linq,dynamic-linq,Asp.net,Linq,Dynamic Linq,我想建立动态Linq。以下是我的代码,它在一个日期内运行良好。但用户可以从日历中选择许多日期。我需要为所有选定的日期制作Linq saleDate = calendarSales.SelectedDate; List<SaleDetails> saleDetials = new List<SaleDetails>(); saleDetials = GetSaleDetails(); saleDetials.Where(sale => (Convert.ToDateT
saleDate = calendarSales.SelectedDate;
List<SaleDetails> saleDetials = new List<SaleDetails>();
saleDetials = GetSaleDetails();
saleDetials.Where(sale => (Convert.ToDateTime(sale.DATE_TIME).Day == saleDate.Day &&
Convert.ToDateTime(sale.DATE_TIME).Month == saleDate.Month &&
Convert.ToDateTime(sale.DATE_TIME).Year == saleDate.Year)
).ToList();
saleDate=calendarSales.SelectedDate;
List saleDetials=新列表();
saleDetials=GetSaleDetails();
saleDetials.Where(sale=>(Convert.ToDateTime(sale.DATE\u TIME).Day==saleDate.Day&&
Convert.ToDateTime(sale.DATE\u TIME).Month==saleDate.Month&&
Convert.ToDateTime(sale.DATE\u TIME).Year==saleDate.Year)
).ToList();
如何更新此查询?您必须动态地为where子句构建谓词 请看下面的图片 编辑 当然PredicateBuilder支持
和
和或
运算符
使用或
时,必须从初始值False
开始:
// building the predicate
var pred = PredicateBuilder.False<SaleDetails>();
foreach (var date in MyDateList)
{
pred = pred.Or(sale => sale.DATE_TIME.Date == saleDate.Date);
}
// finally get the data and filter it by our dynamic predicate
List<SaleDetails> saleDetails = GetSaleDetails().Where(pred).ToList();
//构建谓词
var pred=PredicateBuilder.False();
foreach(MyDateList中的var日期)
{
pred=pred.Or(sale=>sale.DATE\u TIME.DATE==saleDate.DATE);
}
//最后获取数据并通过我们的动态谓词进行过滤
List saleDetails=GetSaleDetails().Where(pred.ToList();
我不确定您是否需要动态LINQ。您应该能够检查销售与所选日期中的任何日期匹配的地方,如:
var saleDates = GetSelectedDate();
List<SaleDetails> saleDetials = new List<SaleDetails>();
saleDetials = GetSaleDetails();
saleDetials.Where(sale => saleDates.Any(date =>
(Convert.ToDateTime(sale.DATE_TIME).Day == date.Day &&
Convert.ToDateTime(sale.DATE_TIME).Month == date.Month &&
Convert.ToDateTime(sale.DATE_TIME).Year == date.Year)
)).ToList();
为什么不比较日期,比如
Convert.ToDateTime(sale.date\u Time).date==saleDate.date
,而不是手动检查每个日期part@MuhammadAdeel Zahid我们在这些领域也会有时间,我想在进行比较时剥离它DateTime.Date
函数会自动剥离时间并仅返回日期部分tanks@Muhammad adel Zahid,一旦我能够构建动态林齐需求或各种条件之间的数据,我就会这样做,以便所有日期的数据都会出现。这将如何运作?
var saleDates = GetSelectedDate();
List<SaleDetails> saleDetials = new List<SaleDetails>();
saleDetials = GetSaleDetails();
saleDetials.Where(sale => saleDates.Any(date =>
Convert.ToDateTime(sale.DATE_TIME).Date == date.Date)).ToList();