簡體   English   中英

LINQ動態查詢里面

[英]linq query dynamically inside where

我想動態更改查詢的特定部分-取決於if條件的結果。 我很高興您的幫助:

if (someCondition == true)
    var ADDITION_FILTER_CRITERIA = && z.t.Name == Keyword
else
    var ADDITION_FILTER_CRITERIA = "";

var ToursPerDestination = await _context.Tours
    .Join(_context.CruiseDestinations, t => t.DestinationId, d => d.DestinationId, (t, d) => new { t, d })
    .Where(z => z.d.CruiseId == SelectedCruise.CruiseId ADDITION_FILTER_CRITERIA )
    .Select(z => new ToursViewModel()
    {                   
        Name = z.t.Name,                   
    }).OrderByDescending(z => z.Name).ToListAsync().ConfigureAwait(false);

您可以創建Func<string, bool>並根據someCondition確定要檢查的someCondition

Func<string, bool> ADDITION_FILTER_CRITERIA;
if (someCondition == true)
    ADDITION_FILTER_CRITERIA = (string s) => s == Keyword;
else
    ADDITION_FILTER_CRITERIA = (string s) => true;

var ToursPerDestination = await _context.Tours
    .Join(_context.CruiseDestinations, t => t.DestinationId, d => d.DestinationId, (t, d) => new { t, d })
    .Where(z => z.d.CruiseId == SelectedCruise.CruiseId && ADDITION_FILTER_CRITERIA(z.t.Name) )
    .Select(z => new ToursViewModel() { Name = z.t.Name }).OrderByDescending(z => z.Name).ToListAsync().ConfigureAwait(false);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM