我在那個用戶中有一個接口,指示它們之間的一些元素和運算符,我應該顯示結果。在.NET中構建一個簡單的表達式
用戶可以建立然後像p1 OP v1 OR p2 OP v2
一個過濾器,其中p1
和p2
是Person
屬性,如Age, Name, Location
等v1
和v2
是比較值(10, '瑪利亞', 'LA'),OP是比較操作符(=,< ,>)和OR是一個邏輯運算符(也可以是AND)。
如:
Age > 18 AND Location = 'Paris'
,或另一個類似
Name Contains 'andro' AND Sex = 'm'
有myPeople
收集與該過濾字符串,如何建立和應用使用Linq.Expressions這體現在哪裏?
我試圖用DynamicLinq,但實際上我用「去哪兒」上List<Person>
有問題,顯然不是IQueryable
...
問題是在真實項目中謂詞的數目是未知的 - 用戶可以添加過濾器的數量是多少。那麼,我最終應該如何處理這個'var adultPersonInParis',將它應用於Where子句中呢? – serhio
@serhio:只要繼續構建一個謂詞 - 從始終*返回true的東西開始,並適當地應用AND和OR。查看PredicateBuilder鏈接瞭解更多細節 - 以上是相同的想法,僅適用於代表而不是表達式樹。 –