是否可以創建一個自定義lambda函數,我可以用下面的.Contains()/.StartsWith()/EndsWith()
調用替換掉?自定義函數來替換lambdas Contains,StartsWith和EndsWith
如果是這樣,我不需要在這裏比較search
字符串,但是我可以在這個自定義函數中執行此操作。如果我是對的,這將刪除2/3以下的代碼。
...或者如果你有任何其他的想法如何最小化這我會很高興聽到它!
private void searcher(ref Expression<Func<Party, bool>> predicate, string search, string keyword, string column)
{
if (search == "contain")
{
if (column == "surname") predicate = predicate.And(p => p.surname.Contains(keyword));
if (column == "lastname") predicate = predicate.And(p => p.lastname.Contains(keyword));
if (column == "comment") predicate = predicate.And(p => p.comment.Contains(keyword));
if (column == "position") predicate = predicate.And(p => p.position.Contains(keyword));
}
else if (search == "start")
{
if (column == "surname") predicate = predicate.And(p => p.surname.StartsWith(keyword));
if (column == "lastname") predicate = predicate.And(p => p.lastname.StartsWith(keyword));
if (column == "comment") predicate = predicate.And(p => p.comment.StartsWith(keyword));
if (column == "position") predicate = predicate.And(p => p.position.StartsWith(keyword));
}
else if (search == "end")
{
if (column == "surname") predicate = predicate.And(p => p.surname.EndsWith(keyword));
if (column == "lastname") predicate = predicate.And(p => p.lastname.EndsWith(keyword));
if (column == "comment") predicate = predicate.And(p => p.comment.EndsWith(keyword));
if (column == "position") predicate = predicate.And(p => p.position.EndsWith(keyword));
}
}
你也可以用第二個委託代替「搜索」... –