![](/img/trans.png)
[英]How can I Refactor This To Pass in the "Property to Use" in this Lambda to Make This Method Reusable?
[英]How to refactor a link query with filtering logic into a reusable method
我正在使用EF Core來查詢數據庫,並且我的存儲庫類中有幾個類似的查詢,它們基於作為過濾器傳遞的值來過濾結果。
if (!string.IsNullOrEmpty(queryObj.JobBoard))
query = query.Where(j => j.JobBoard.JobBoardName.Contains(queryObj.JobBoard));
if (!string.IsNullOrEmpty(queryObj.Division))
query = query.Where(j => j.Division.Contains(queryObj.Division));
if (!string.IsNullOrEmpty(queryObj.City))
query = query.Where(j => j.City.Contains(queryObj.City));
if (!string.IsNullOrEmpty(queryObj.State))
query = query.Where(j => j.State.StateName.Contains(queryObj.State));
是否有實現一個可重用方法的方法,所以我不必在每個領域都重復此步驟? (確切地說有12個字段)。
好吧,我不這么認為,因為在這種情況下,您並不僅僅是在每種情況下都訪問一階對象。 在某些情況下,您要檢查那些對象的屬性。
試試這個。 用&&運算符包括所有其他屬性。
query = query.Where(j =>
string.IsNullOrEmpty(queryObj.JobBoard) ? true : j.JobBoard.JobBoardName.Contains(queryObj.JobBoard)
&& string.IsNullOrEmpty(queryObj.Division) ? true : j.Division.Contains(queryObj.Division)
&& string.IsNullOrEmpty(queryObj.City) ? true : j.City.Contains(queryObj.City)
&& string.IsNullOrEmpty(queryObj.State) ? true : j.State.StateName.Contains(queryObj.State)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.