动态 linq 查询不起作用
本文关键字:不起作用 查询 linq 动态 | 更新日期: 2023-09-27 18:35:40
我正在使用动态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'"
Becuase RequestNumber
是一个string
。如果你周围没有''
,它会认为这是一个int
编辑
您也可以尝试使用转义字符"RequestNumber == '"12'""
我明白了你的"请求号码"是字符串,必须使用Equals("12"),试试这个它绝对应该有效。
RequestNumber.Equals("12")
快乐编码!!