基于变量添加额外的linq where子句

本文关键字:linq where 子句 添加 于变量 变量 | 更新日期: 2023-09-27 18:05:47

我正试图根据传递给函数的变量结果向linq查询添加额外的where子句。

var allFeedback = 
    from f in _unitOfWork.Feedback.All()
    join b in _unitOfWork.Bookings.All() on f.CourseBookingID equals b.CourseBookingID
    join cb in _unitOfWork.CourseBookings.All() on f.CourseBookingID equals cb.CourseBookingID
    where b.SiteID == siteID && b.Date >= fromDate && b.Date <= to && b.CancelledID == null
    select f;
if (courseID > 0)
{
    allFeedback.Where(f => f.CourseBooking.CourseID == courseID);
}
if (facilitatorID == 0)
{
    allFeedback.Where(f => f.CourseBooking.FacilitatorID == null);
}
else if (facilitatorID > 0)
{
    allFeedback.Where(f => f.CourseBooking.FacilitatorID == facilitatorID);
}
allFeedback.ToList();

我想将where子句添加到原始查询"allFeedback",但是当查询执行时,额外的子句被忽略。

这可能吗?

基于变量添加额外的linq where子句

是的,这是可能的。

if (courseID > 0)
{
    allFeedback = allFeedback.Where(f => f.CourseBooking.CourseID == courseID);
}
if (facilitatorID == 0)
{
    allFeedback = allFeedback.Where(f => f.CourseBooking.FacilitatorID == null);
}
else if (facilitatorID > 0)
{
    allFeedback = allFeedback.Where(f => f.CourseBooking.FacilitatorID == facilitatorID);
}

您只是忘记将结果赋值给变量。