簡體   English   中英

動態linq查詢不起作用

[英]Dynamic linq query not working

我正在使用此處的Dynamic Linq庫:

http://speakingin.net/2008/01/08/dynamic-linqparte-1-usando-la-libreria-de-linq-dynamic/

http://msdn.microsoft.com/en-us/vstudio//bb894665.aspx

我的DAL中有以下代碼:

public IQueryable<RequestBase> GetRequestByCustomQuery(string strql)
            {
                return _context.RequestBases.Where(strql);
            }

我的頁面中有以下代碼:

protected void BtnOpenReport_Click(object sender, EventArgs e)
        {
             var list = RequestBaseBL.GetRequestByCustomQuery("RequestNumber = 12");
            GrvResults.DataSource = list;
            GrvResults.DataBind();
        }

我省略了所有其他圖層,但是有一個BL,然后是一個Dal Facade,然后是DL,但他們所做的只是將字符串傳遞給最后一層,即DAL。

我得到了例外

Operator '=' incompatible with operand types 'String' and 'Int32' 

對象是這樣的:

public class RequestBase
    {
        public int RequestBaseId { get; set; }
        public string CurrentStatus { get; set; }
        public string RequestNumber { get; set; }
        public DateTime RequestDate { get; set; }
        public bool IsOnHold { get; set; }

        public virtual Dealer Dealer { get; set; }
        public virtual Requester Requester { get; set; }
        public virtual Vehicle Vehicle { get; set; }

        public virtual ICollection<Attachment> Attachments { get; set; }
        public virtual ICollection<WorkflowHistory> WorkflowHistories { get; set; }

這可能是因為您的RequestNumber被定義為對象中的字符串。 但是在請求中"RequestNumber = 12" 12被認為是一個數字。

試試"RequestNumber == \\"12\\""

你不能使用簡單的引用,因為它是為了字符,也就是說只有一個字母。

我想你需要改變

"RequestNumber = 12"

"RequestNumber = '12'"

因為RequestNumber是一個string 如果你沒有'' ,它會認為它是一個int

編輯

您還可以使用轉義字符嘗試"RequestNumber == \\"12\\""

我得到它你的“RequestNumber”是字符串,並且必須使用Equals(“12”),嘗試它應該絕對有效。

RequestNumber.Equals( “12”)

快樂的編碼!!!

暫無
暫無

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

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