5

ここにあるDynamicLinqライブラリを使用しています:

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ファサード、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\""

単純な引用符も使用できません。これは文字のため、つまり 1 文字だけだからです。

于 2012-05-30T12:29:38.597 に答える
2

私はあなたが変わる必要があると思います

"RequestNumber = 12"

"RequestNumber = '12'"

なぜならRequestNumberstring. ''周りを持っていない場合は、int

編集

"RequestNumber == \"12\""エスケープ文字で試すこともできます

于 2012-05-30T12:27:43.050 に答える
0

あなたの「RequestNumber」は文字列であり、Equals(「12」)を使用する必要があることがわかりました。これを試してみると、間違いなく機能するはずです。

RequestNumber.Equals("12")

ハッピーコーディング!!!

于 2012-05-30T12:25:47.933 に答える