[英]Create Linq Expression ( Combine Expressions )
我正在使用帶有C#lang的實體框架6.1.3和.net框架4.5.1。
我想做的是 我想將表達式與if-else語句組合在一起。
這是我的表情
Expression<Func<Article, bool>> expression =
q => (!newsDayStart.HasValue || q.PublishedOn >= newsDayStart) &&
(!newsDayEnd.HasValue || q.PublishedOn <= newsDayEnd) &&
(!categoryId.HasValue || q.CategoryId == categoryId.Value) &&
(string.IsNullOrEmpty(searchText) || q.Title.Contains(searchText) &&
(!isActive != null || q.IsActive == isActive.Value));
至
Expression<Func<Article, bool>> expression = ......;
if ( newsDayStart.HasValue )
{
//Obviosly += this statement will not work.
expression += q => q.PublishedOn > = newsDayStart
}
//TODO write other if else statements...
//Send expression
_context.Articles.Where(expression).Count();
如果這是專門用於EF查詢的,那么您可能會發現,更輕松地鏈接Where()調用以達到相同的效果。
Expression<Func<Article, bool>> expression = ......;
//Send expression
var query = _context.Articles.Where(expression)
if ( newsDayStart.HasValue )
{
query = query.Where(q => q.PublishedOn > = newsDayStart);
}
query.Count();
*編輯
您可以嘗試使用此第三方庫PredicateBuilder http://www.albahari.com/nutshell/predicatebuilder.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.