閱讀英文

共用方式為


Queryable.Any 方法

定義

判斷 IQueryable<T> 序列的任何專案是否存在或符合條件。

多載

Any<TSource>(IQueryable<TSource>)

判斷序列是否包含任何專案。

Any<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)

判斷序列的任何專案是否符合條件。

Any<TSource>(IQueryable<TSource>)

來源:
Queryable.cs
來源:
Queryable.cs
來源:
Queryable.cs

判斷序列是否包含任何專案。

C#
public static bool Any<TSource> (this System.Linq.IQueryable<TSource> source);

類型參數

TSource

source專案的型別。

參數

source
IQueryable<TSource>

要檢查是否為空的序列。

傳回

如果來源序列包含任何專案,true;否則,false

例外狀況

source null

範例

下列程式代碼範例示範如何使用 Any<TSource>(IQueryable<TSource>) 來判斷序列是否包含任何專案。

C#
List<int> numbers = new List<int> { 1, 2 };

// Determine if the list contains any elements.
bool hasElements = numbers.AsQueryable().Any();

Console.WriteLine("The list {0} empty.",
    hasElements ? "is not" : "is");

// This code produces the following output:
//
// The list is not empty.

Any<TSource>(IQueryable<TSource>) 方法傳回的布爾值通常用於 where 子句的述詞(Visual Basic 中的Where 子句)或直接呼叫 Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) 方法。 下列範例示範如何使用 Any 方法。

C#
class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}
class Person
{
    public string LastName { get; set; }
    public Pet[] Pets { get; set; }
}

public static void AnyEx2()
{
    List<Person> people = new List<Person>
        { new Person { LastName = "Haas",
                       Pets = new Pet[] { new Pet { Name="Barley", Age=10 },
                                          new Pet { Name="Boots", Age=14 },
                                          new Pet { Name="Whiskers", Age=6 }}},
          new Person { LastName = "Fakhouri",
                       Pets = new Pet[] { new Pet { Name = "Snowball", Age = 1}}},
          new Person { LastName = "Antebi",
                       Pets = new Pet[] { }},
          new Person { LastName = "Philips",
                       Pets = new Pet[] { new Pet { Name = "Sweetie", Age = 2},
                                          new Pet { Name = "Rover", Age = 13}} }
        };

    // Determine which people have a non-empty Pet array.
    IEnumerable<string> names = from person in people
                                where person.Pets.AsQueryable().Any()
                                select person.LastName;

    foreach (string name in names)
        Console.WriteLine(name);

    /* This code produces the following output:

       Haas
       Fakhouri
       Philips
    */
}

備註

Any<TSource>(IQueryable<TSource>) 方法會產生 MethodCallExpression,代表呼叫 Any<TSource>(IQueryable<TSource>) 本身做為建構的泛型方法。 然後,它會將 MethodCallExpression 傳遞至 source 參數 Provider 屬性所表示之 IQueryProviderExecute<TResult>(Expression) 方法。

執行表示呼叫 Any<TSource>(IQueryable<TSource>) 表達式樹狀結構的查詢行為,取決於 source 參數類型的實作。 預期的行為是它會判斷 source 是否包含任何專案。

適用於

Any<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)

來源:
Queryable.cs
來源:
Queryable.cs
來源:
Queryable.cs

判斷序列的任何專案是否符合條件。

C#
public static bool Any<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);

類型參數

TSource

source專案的型別。

參數

source
IQueryable<TSource>

序列,其專案要測試條件。

predicate
Expression<Func<TSource,Boolean>>

用來測試條件每個專案的函式。

傳回

如果來源序列中的任何專案都通過指定述詞中的測試,true;否則,false

例外狀況

sourcepredicatenull

範例

下列程式代碼範例示範如何使用 Any<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) 來判斷序列中的任何專案是否符合條件。

C#
class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
    public bool Vaccinated { get; set; }
}

public static void AnyEx3()
{
    // Create an array of Pet objects.
    Pet[] pets =
        { new Pet { Name="Barley", Age=8, Vaccinated=true },
          new Pet { Name="Boots", Age=4, Vaccinated=false },
          new Pet { Name="Whiskers", Age=1, Vaccinated=false } };

    // Determine whether any pets over age 1 are also unvaccinated.
    bool unvaccinated =
        pets.AsQueryable().Any(p => p.Age > 1 && p.Vaccinated == false);

    Console.WriteLine(
        "There {0} unvaccinated animals over age one.",
        unvaccinated ? "are" : "are not any");
}

// This code produces the following output:
//
//  There are unvaccinated animals over age one.

備註

這個方法至少有一個類型參數 Expression<TDelegate> 其類型自變數是其中一個 Func<T,TResult> 類型。 針對這些參數,您可以傳入 Lambda 運算式,並將它編譯為 Expression<TDelegate>

Any<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) 方法會產生 MethodCallExpression,代表呼叫 Any<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) 本身做為建構的泛型方法。 然後,它會將 MethodCallExpression 傳遞至 source 參數 Provider 屬性所表示之 IQueryProviderExecute<TResult>(Expression) 方法。

執行表示呼叫 Any<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) 表達式樹狀結構的查詢行為,取決於 source 參數類型的實作。 預期的行為是,它會判斷 source 的任何專案是否符合 predicate所指定的條件。

適用於