使用?:实体框架上的操作数

时间:2015-11-14 23:46:24

标签: c# winforms entity-framework-6

我想以这种方式使用它

Context.Moves.OfType<Cuotes>().Where(p =>
                p.Final == true
                && dtFrom.DateTime != null ? p.DeliverDate >= dtFrom.DateTime : true
                && dtTo.DateTime != null ? p.DeliverDate <= dtToHasta.DateTime : true
                && !ckShowDelivered.Checked ? p.Delivered == false : true
                && !ckShowDelivered.Checked ? p.Canceled == false : true
                );

由于我有多个过滤器,我试图以这种方式操作,实际上我有另一个复选框来调节旧的Cuotes版本是否显示Final == false语句,但是这个操作数在{{1}内部似乎没有工作。

这是一种应用此操作数的方法,或者我必须硬编码每个选项组合的if条件?

1 个答案:

答案 0 :(得分:3)

您可以将它们链接到单独的Where来电:

var result = Context.Moves.OfType<Cuotes>().Where(p => p.Final == true);

if (dtFrom.DateTime != null)
    result = result.Where(p => p.DeliverDate >= dtFrom.DateTime);
if (dtTo.DateTime != null)
    result = result.Where(p => p.DeliverDate <= dtToHasta.DateTime);
if (!ckShowDelivered.Checked)
    result = result.Where(p => !p.Delivered);
if (!ckShowDelivered.Checked)
    result = result.Where(p => !p.Canceled);

这样,您可以使用任何类型的外部条件来影响查询,而无需在查询本身中使用这些外部条件。