程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Expression<Func<TObject, bool>>與Func<TObject, bool>的區別,functobject

Expression<Func<TObject, bool>>與Func<TObject, bool>的區別,functobject

編輯:關於.NET

Expression<Func<TObject, bool>>與Func<TObject, bool>的區別,functobject


Func<TObject, bool>是委托(delegate)

Expression<Func<TObject, bool>>是表達式

Expression編譯後就會變成delegate,才能運行。比如

Expression<Func<int, bool>> ex = x=>x < 100;

Func<int, bool> func = ex.Compile(); 

然後你就可以調用func:

func(5) //-返回 true

func(200) //- 返回 false

而表達式是不能直接調用的。

===========================

案例:不正確的查詢代碼造成的數據庫全表查詢。

上面代碼邏輯是根據條件動態生成LINQ查詢條件,將Func類型的變量作為參數傳給Where方法。

實際上Where要求的參數類型是:Expression<Func<TSource, bool>>。

解決方法:

不要用Func<TSource, bool>,用Expression<Func<TSource, bool>>。

轉自:http://www.cnblogs.com/wow-xc/articles/4952233.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved