這段時間需要制定自定義查詢條件,感覺有必要學習expressiontree。
學習參考資料:
publicclass
people
public
string email
public
int cityid
}
listpeople = new list,new people(),
new people(),
new people()
};
在list中根據name排序
1、如何將已經生成的expression與分頁機制聯起來?設想是:將查詢條件變成json格式,在頁面端顯示string,儲存到分頁的data屬性中,再從後台分解出json。
目前已成功。
後端生成json字串:
viewbag.searchcondition = jsonconvert.serializeobject(searchcondition);
前端使用json字串:@}
@ajax.actionlink(i.tostring(), "
action
", "
controller
", new , new ajaxoptions )
後端解析json字串
searchdevicecondition searchcondition = jsonconvert.deserializeobject(jsonsearchcondition);
2、and與andalso的區別
andalso對應"&&"
3、expression.equals()相等操作,型別不匹配的問題
var exmaintaininfoid = expression.property(expression.property(param, "maintaininfo
"), "
maintaininfoid");
var searchmaintaininfoid =expression.convert(expression.constant(searchcondition.maintaininfoid), exmaintaininfoid.type);
var equalmaintaininfoid = expression.equal(exmaintaininfoid, searchmaintaininfoid);
searchcondition.maintaininfoid中的型別為int?型,而param=>param.maintaininfoid型別為int型,直接用expression.equals()會提示資料不匹配,無法操作的錯誤。4、enum操作方法解決辦法是利用expression.convert()將int?型轉換成int型別。
4.1需要用到enumtype本身
expression searchmaintainresult = expression.constant( searchcondition.maintainresult, typeof(maintainresultenum));
expression exmaintainresult = expression.property(param, "
maintainresult");
expression equalmaintainresult = expression.equal(exmaintainresult, searchmaintainresult);
利用expression.constant(, type)中的第二個引數type,將該值設為enumtype.
4.2需要用到enumtype中的值
var maintainlevel = (int)searchcondition.radiomaintainlevel;
expression searchmaintainlevel =expression.constant(maintainlevel);
exmaintainlevel = expression.property(exmaintainlevel, "
maintainlevelclass");
expression equalmaintainlevel = expression.equal(exmaintainlevel, searchmaintainlevel);
比如enumtype中的項設為int=1,需要用到「1」的值,先轉換成int型。
Expression Tree 上手指南 (三)
上回 我們說到手工解析expression tree,以便獲得其中的邏輯或者執行我們自定義的語義動作。這種做法擴充套件了c 語言的威力,讓我們可以用c 的語法來做更多的事情,例如linq to sql。今天我們要學習一種相反的做法,手工建立表示式樹,然後讓.net來解析它。這是一種強大的動態程式設計...
學做事,先學做人
經理很關照我,我很感謝經理。其實,有乙個好的領導,只要好好幹,他是一定會知道的。但是,要改變客戶的看法,看來還真的很難。在客戶面前不可以太謙虛,太過謙虛,他們反覺得我們無能。做事先做人,一點都沒錯啊。感覺自己太嫩了,這一切還得慢慢磨練。希望多看數,多學習,多仔細觀察生活,觀察周圍成功的人,不斷提高自...
B 學密碼學真的得學程式
b 學密碼學真的得學程式 time limit 1000msmemory limit 65536kb64bit io format lld llu submit status practice sdutoj 2464 description 話說,上次zyj同學最終在眾位瑪麗亞的幫助下搞定了那個神奇...