【问题标题】:Adding additional linq where clauses based on variables添加基于变量的附加 linq where 子句
【发布时间】:2014-05-29 09:00:03
【问题描述】:

我正在尝试根据传递给函数的变量结果向 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”中,但是在执行查询时会忽略附加子句。

这可能吗?

【问题讨论】:

    标签: c# linq asp.net-mvc-4 ienumerable


    【解决方案1】:

    是的,它可能只是这样做:

    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);
    }
    

    您只是忘记将结果分配给变量。

    【讨论】:

    • 非常感谢您! :) 如果允许,我会将其标记为已接受的答案,再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2021-04-09
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    相关资源
    最近更新 更多