5

我正在使用此处找到的动态 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; }
4

3 回答 3

12

这可能是因为您的 RequestNumber 被定义为对象中的字符串。但在请求中, "RequestNumber = 12" 12 被视为一个数字。

尝试"RequestNumber == \"12\""

你也不能使用简单的引号,因为它是用于字符的,也就是说只有一个字母。

于 2012-05-30T12:29:38.597 回答
2

我认为你需要改变

"RequestNumber = 12"

"RequestNumber = '12'"

因为RequestNumber是一个string。如果你没有''周围它会认为它是一个int

编辑

您也可以尝试"RequestNumber == \"12\""使用转义字符

于 2012-05-30T12:27:43.050 回答
0

我知道你的“RequestNumber”是字符串,必须使用 Equals(“12”),试试这个它肯定可以工作。

RequestNumber.Equals("12")

快乐编码!!!

于 2012-05-30T12:25:47.933 回答