Linq查询中的AND OR

时间:2014-07-30 21:04:53

标签: c# linq

在Linq查询中,我需要按日期和本地,日期或本地过滤约会。

因此,如果GivenDate和GivenLocal不为null,我需要按GivenDate和GivenLocal进行过滤:

appointments.Where(x => x.Date == x.GivenDate && x.Local == x.GivenLocal)

如果GivenDate为null,则过滤器将由Local:

完成
appointments.Where(x => x.Local == x.GivenLocal)

如果GivenLocal为null,则按日期过滤:

appointments.Where(x => x.Date == x.GivenDate)

是否可以使用一个查询而不是使用IF语句和3个查询来执行此操作?

2 个答案:

答案 0 :(得分:3)

appointments.Where(x =>
    (x.GivenDate == null || x.Date == x.GivenDate) &&
    (x.GivenLocal == null || x.Local == x.GivenLocal) && )

答案 1 :(得分:0)

appointmentments.Where(x =>((x.GivenDate!= null&& x.GivenLocal!= null&& x.Date == x.GivenDate&& x.Local == x.GivenLocal)||(x.GivenDate == null&& x.Local == x.GivenLocal)||(x.GivenLocal == null&& x.Date == x.GivenDate)))