簡體   English   中英

將字符串變量作為查詢參數傳遞給LINQ查詢

[英]Pass string variable as query parameter to LINQ query

我試圖通過我的MVC控制器中的POST請求將字符串變量傳遞到LINQ查詢中。 我已經在動態LINQ示例中嘗試了多種變體(這似乎是推薦的主要方法。

預期結果

IEnumerable數組,其中包含基於ng-repeat中顯示的指定SiteID的結果。

非動態LINQ查詢

public IEnumerable<SpecialsViewModel> GetAllSpecialsBySiteID(string siteID)
{
    var query = (from s in _calcContext.Specials
    where s.SiteID == siteID
    select new SpecialsViewModel
    {
        ID = s.ID,
        SiteID = s.SiteID,
        Title = s.Title,
        Description = s.Description,
        Price = s.Price,
        Position = s.Position,
        EffectiveDate = s.EffectiveDate,
        CreationDate = s.CreationDate,
        Status = s.Status,
        LastUpdated = s.LastUpdated
    }).ToList();

    return query;
}

結果

沒有返回結果。

動態LINQ查詢

public IEnumerable<SpecialsViewModel> GetAllSpecialsBySiteID(string siteID)
{ 
    var query = (from s in _calcContext.Specials
    select new SpecialsViewModel
    {
        ID = s.ID,
        SiteID = s.SiteID,
        Title = s.Title,
        Description = s.Description,
        Price = s.Price,
        Position = s.Position,
        EffectiveDate = s.EffectiveDate,
        CreationDate = s.CreationDate,
        Status = s.Status,
        LastUpdated = s.LastUpdated
    });

    query = query.Where("SiteID=@0", siteID);

    return query;
}

結果

沒有返回結果。

如果兩個linq查詢都未能返回結果,則我懷疑您傳遞的值不是您期望的值。 嘗試將siteID的值硬編碼為已知的適當值,然后查看是否可行。 (我更喜歡第一個查詢,但是都很好)

嘗試將siteID為int並傳遞給where子句,例如: where s.SiteID == (int32?)siteID

暫無
暫無

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

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