【问题标题】:How to Search with multiple parameters in LINQ Where Clause如何在 LINQ Where 子句中使用多个参数进行搜索
【发布时间】:2015-05-08 11:48:45
【问题描述】:

我有一个旅行项目 (ASP.NET MVC4)。我想在 LINQ where 子句中使用多个参数搜索 Tours。

这是我的观点:

<form class="green" id="formsearchtravel" method="get" action="@Url.Content("~/" + "search")">
                    <div class="col-lg-3 col-sm-6">
                        <select name="destination" >
                                <option value="any">All </option>
                                <option value="India">Ấn độ</option>
                                <option value="thailand">Thailand</option>
                                <option value="japan">Nhật bản</option>
                                <option value="uk">Anh</option>
                            </select>
                    </div>
                    <div class="col-lg-3 col-sm-6">
                       <select name="duration" >
                                <option value="any">All</option>
                                <option value="5">from 0 - 5</option>
                                <option value="10">from 05 -10</option>
                                <option value="15">from 10 -15</option>
                                <option value="16">over 15 days</option>
                            </select>
                    </div>
                    <div class="col-lg-3 col-sm-6">
                        <select name="price" >
                                <option value="any">All</option>
                                <option value="500">A – 0 – 500 $</option>
                                <option value="1000">B – 500 – 1000 $</option>
                                <option value="2000">C – 1000 – 2000 $</option>
                                <option value="3000">D – 2000 – 3000 $</option>
                                <option value="4000">E – Trên 4000 $</option>
                            </select>
                      </div>
                    <div class="col-lg-3 col-sm-6">
                        <input value="Search" type="submit" />
                    </div>
</form>

这是控制器:

public IEnumerable<TourSummaryDto> GetSearchTours(string destination, int? duration, int? price)
{
        var query = _tourItemRepository.GetAll();

        return
            ConvertToTourSummaryDtoQuery(
                query.Where(p => p.Category.Name.ToUpper() == destination.ToUpper() &&  p.TourContent.Giagoc > 500 && p.TourContent.Soluongngay < 15).OrderByDescending(t => t.CreatedDate));
}

如何使用 Destination = anyDestination = something And Duration = allDuration = something AND Price = all or Price = somethings 进行搜索

如何使用所有这些搜索(目的地和持续时间和价格)

感谢任何帮助。

【问题讨论】:

  • 不清楚您所说的 Destination = Any 或 Destination = something 等是什么意思。您能否举例说明您的问题?
  • 例如:1,目的地 = 全部 AND 5 天

标签: c# linq search parameters where


【解决方案1】:

您可以根据给定的输入构建您的 where 子句。

例如:

public IEnumerable<TourSummaryDto> GetSearchTours(string destination, int? duration, int? price)
{
        var query = _tourItemRepository.GetAll();

        //always has a destination
        query = query.Where(p => p.Category.Name.ToUpper() == destination.ToUpper();

        //filter results that also have the given duration, only if a value is provided.
        if (duration.HasValue)
        {
            query = query.Where(p => p.Duration == duration.Value);
        }

        return
            ConvertToTourSummaryDtoQuery(query.OrderByDescending(t => t.CreatedDate));
}

这显然会将条件与条件结合在一起。如果您有 OR 条件(特别是限制为两个输入值),那么您需要将它们组合成一个 where 子句。

【讨论】:

  • 如何建立 Where 子句:如果持续时间
猜你喜欢
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多