C# Any()和AII()方法的區(qū)別
我們常常需要的另一類查詢是確定數(shù)據(jù)是否滿足某個(gè)條件,或者確保所有數(shù)據(jù)都滿足某個(gè)條件。例如,需要確定某個(gè)產(chǎn)品是否已經(jīng)脫銷(庫存為 0),或者是否發(fā)生了某個(gè)交易。
LINQ 提供了兩個(gè)布爾方法:Any()和 All(),它們可以快速確定對(duì)于數(shù)據(jù)而言,某個(gè)條件是 true 還是 false。因此很容易地找到數(shù)據(jù),如下面的示例所示。
按照下面的步驟在Visual Studio 中創(chuàng)建示例:
(1)創(chuàng)建一個(gè)新的控制臺(tái)應(yīng)用程序。
(2)創(chuàng)建 Customer 類的代碼和初始化顧客列表(List<Customer>customers)的代碼。
(3)在Main() 方法中,在 customers 列表初始化和查詢聲明后,刪除處理循環(huán),輸入如下所示的代碼:
bool anyUSA = customers.Any(c => c.Country == "USA"); if (anyUSA) { Console.WriteLine("Some customers are in the USA"); } else { Console.WriteLine("No customers are in the USA"); } bool allAsia = customers.All(c => c.Region == "Asia"); if (allAsia) { Console.WriteLine("All customers are in Asia"); } else { Console.WriteLine("Not all customers are in Asia"); }
(4)編譯并執(zhí)行程序,將看到一些消息,指出一些顧客來自美國(guó),并不是所有的顧客都來自亞洲:
Some customers are in the USA
Not all customers are in Asia
Program finished, press Enter/Return to continue:
示例的說明
Customer 類和 customers 列表的初始化與前面例子中的相同。在第一個(gè)查詢語句中,調(diào)用了 Any() 方法,用一個(gè)簡(jiǎn)單的 Lambda 表達(dá)式檢查 Customer Country 字段的值是不是USA:
bool anyUSA = customers.Any(c => c.Country == "USA");
LINQ方法Any() 把傳送給它的 Lambda 表達(dá)式 c=>c.Country=="USA"應(yīng)用于customers 列表中的所有數(shù)據(jù),如果對(duì)于列表中的任意顧客,Lambda 表達(dá)式是 true,就返回 true。
接著檢查 Any() 方法返回的布爾結(jié)果變量,輸出一個(gè)消息,顯示查詢的結(jié)果 Any()方法雖然僅返回 true 或 false,但它會(huì)執(zhí)行一個(gè)查詢,得到 true 或 false 結(jié)果):???????
if (anyUSA) { Console.WriteLine("Some customers are in the USA"); } else { Console.WriteLine("No customers are in the USA"); }
雖然可以通過一些巧妙的代碼使這個(gè)消息更緊湊一些,但這里的代碼比較直觀,便于理解。anyUSA 設(shè)為 true, 因?yàn)閿?shù)據(jù)集中的確有顧客居住在美國(guó),所以看到了消息 Some customers are in the USA.
在下一個(gè)查詢語句中,調(diào)用了 AII() 方法,利用另一個(gè)簡(jiǎn)單的 Lambda 表達(dá)式確定是否所有的顧客都來自亞洲:
bool allAsia = customers.All(c=> c.Region =="Asia");
LINQ 方法All() 把 Lambda 表達(dá)式應(yīng)用于數(shù)據(jù)集,并返回 false,因?yàn)橛幸恍╊櫩筒皇莵碜詠喼?。然后根?jù) allAsia 的值返回相應(yīng)的消息。
到此這篇關(guān)于C# Any()和AII()方法的區(qū)別的文章就介紹到這了,更多相關(guān)C# Any()和AII()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#獲取機(jī)器碼的方法詳解(機(jī)器名,CPU編號(hào),硬盤編號(hào),網(wǎng)卡mac等)
這篇文章主要介紹了C#獲取機(jī)器碼的方法,結(jié)合實(shí)例形式詳細(xì)分析了C#獲取硬件機(jī)器名、CPU編號(hào)、硬盤編號(hào)、網(wǎng)卡mac等信息的相關(guān)實(shí)現(xiàn)方法,需要的朋友可以參考下2016-07-07C#編程實(shí)現(xiàn)向并口設(shè)備發(fā)送指令、獲取并口設(shè)備的狀態(tài)
這篇文章主要介紹了C#編程實(shí)現(xiàn)向并口設(shè)備發(fā)送指令、獲取并口設(shè)備的狀態(tài),本文直接給出實(shí)例代碼,需要的朋友可以參考下2015-06-06DevExpress之ChartControl實(shí)現(xiàn)柱狀圖演示實(shí)例
這篇文章主要介紹了DevExpress中ChartControl實(shí)現(xiàn)柱狀圖演示方法,實(shí)例展示了相關(guān)繪圖函數(shù)的具體用法,具有一定的實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10C#控制臺(tái)程序中處理2個(gè)關(guān)閉事件的代碼實(shí)例
這篇文章主要介紹了C#控制臺(tái)程序中處理2個(gè)關(guān)閉事件的代碼實(shí)例,本文中的2個(gè)關(guān)閉事件是指Ctrl+C事件和窗口的關(guān)閉按鈕事件,需要的朋友可以參考下2014-09-09C#實(shí)現(xiàn)獲取一年中是第幾個(gè)星期的方法
這篇文章主要介紹了C#實(shí)現(xiàn)獲取一年中是第幾個(gè)星期的方法,比較實(shí)用的功能,需要的朋友可以參考下2014-08-08C#導(dǎo)出pdf的實(shí)現(xiàn)方法(瀏覽器不預(yù)覽直接下載)
這篇文章主要給大家介紹了關(guān)于C#導(dǎo)出pdf的實(shí)現(xiàn)方法,實(shí)現(xiàn)后瀏覽器不預(yù)覽就可以直接下載,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12