Udostępnij za pośrednictwem


LinqDataSource.Where Właściwość

Definicja

Pobiera lub ustawia wartość określającą, jakie warunki muszą być spełnione, aby rekord został uwzględniony w pobranych danych.

public:
 property System::String ^ Where { System::String ^ get(); void set(System::String ^ value); };
public string Where { get; set; }
member this.Where : string with get, set
Public Property Where As String

Wartość właściwości

Ciąg, który jest używany do tworzenia klauzuli Where.

Implementuje

Przykłady

W poniższym przykładzie pokazano, jak filtrować dane zwrócone z zapytania na podstawie warunku statycznego.

<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    Where="Price > 50"
    ID="LinqDataSource1" 
    runat="server">
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>
<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    Where="Price > 50"
    ID="LinqDataSource1" 
    runat="server">
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>

W poniższym przykładzie pokazano, jak filtrować dane na podstawie wartości udostępnianej przez użytkownika w czasie wykonywania. W tym przykładzie kontrolka DropDownList i kontrolka GridView są wyświetlane na stronie. Gdy użytkownik wybierze jedną z wartości w kontrolce DropDownList , LinqDataSource kontrolka wybiera z Products tabeli tylko wiersze, które mają UserPrice wartości równe wybranej wartości. Kontrolka GridView wyświetla następnie przefiltrowane dane.

<asp:DropDownList AutoPostBack="true" ID="DropDownList1" runat="server">
    <asp:ListItem Value="0"></asp:ListItem>
    <asp:ListItem Value="25"></asp:ListItem>
    <asp:ListItem Value="100"></asp:ListItem>
    <asp:ListItem Value="400"></asp:ListItem>
</asp:DropDownList>
<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    Where="Price>@UserPrice"
    ID="LinqDataSource1" 
    runat="server">
    <WhereParameters>
        <asp:ControlParameter 
            Name="UserPrice" 
            DefaultValue="0" 
            ControlID="DropDownList1" 
            Type="Int32" />
    </WhereParameters>
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>
<asp:DropDownList AutoPostBack="true" ID="DropDownList1" runat="server">
    <asp:ListItem Value="0"></asp:ListItem>
    <asp:ListItem Value="25"></asp:ListItem>
    <asp:ListItem Value="100"></asp:ListItem>
    <asp:ListItem Value="400"></asp:ListItem>
</asp:DropDownList>
<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    Where="Price > @UserPrice"
    ID="LinqDataSource1" 
    runat="server">
    <WhereParameters>
        <asp:ControlParameter 
            Name="UserPrice" 
            DefaultValue="0" 
            ControlID="DropDownList1" 
            Type="Int32" />
    </WhereParameters>
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>

Uwagi

Właściwość służy Where do określania warunków zwracania rekordu z zapytania. Składnia właściwości Where jest taka sama jak składnia klauzuli LINQ Where w języku C#.

Należy określić wyrażenie, które powoduje wartość logiczną, a jeśli wyrażenie zwróci wartość true dla danego wiersza, wiersz zostanie uwzględniony w zestawie wyników. Wyrażenia składają się z nazw kolumn, operatorów porównania i wartości do porównania, jak pokazano w poniższym przykładzie:

<asp:LinqDataSource ... Where="Price > 50"...>  

Aby określić wiele wyrażeń połączonych przez operatory logiczne AND lub OR operatory, należy użyć && jako operatora logicznego AND i || operatora logicznego OR, jak pokazano w poniższym przykładzie:

<asp:LinqDataSource ... Where="Price > 50 && Price < 100"...>  
<asp:LinqDataSource ... Where="Price <= 50 || Price >= 100"...>  

Jeśli chcesz przetestować właściwość względem wartości ciągu literału, wartość ciągu literału musi być ujęta w znaki podwójnego cudzysłowu. Aby to zrobić w znacznikach, należy ująć wartość klauzuli Where w pojedynczy cudzysłów, jak pokazano w poniższym przykładzie:

<asp:LinqDataSource ... Where='Category = "Sports"' ... >  

Aby przetestować wartość ciągu literału w kodzie, użyj znaków ucieczki odpowiednich dla języka, którego używasz, aby wstawić znaki podwójnego cudzysłowu, jak pokazano w poniższym przykładzie:

LinqDataSource1.Where = "Category = ""Sports"""  
LinqDataSource1.Where = "Category = \"Sports\"";  

Jeśli chcesz sprawdzić, czy ciąg jest większy niż lub mniejszy niż inny ciąg, należy użyć metod String klasy zamiast używać < operatorów lub > między nazwą kolumny a wartością ciągu. W poniższych przykładach pokazano, jak wybrać wiersze, które mają wartości kategorii mniejsze niż, mniejsze lub równe, większe lub większe niż lub równe "Sport":

<asp:LinqDataSource ... Where='Category.CompareTo("Sports") < 0' ... >  
<asp:LinqDataSource ... Where='Category.CompareTo("Sports") <= 0' ... >  
<asp:LinqDataSource ... Where='Category.CompareTo("Sports") > 0' ... >  
<asp:LinqDataSource ... Where='Category.CompareTo("Sports") >= 0' ... >  

Można również użyć innych metod String klasy, takich jak StartsWith, EndsWithi Contains. Aby uzyskać więcej informacji na temat porównywania ciągów, zobacz Porównanie ciągów. Aby uzyskać więcej informacji na temat składni klauzul Where, zobacz Operatory języka C# i klauzula where.

Oprócz filtrowania na podstawie wartości statycznych zdefiniowanych podczas tworzenia strony sieci Web, można filtrować na podstawie wartości dynamicznych, które są oceniane w czasie wykonywania. W takim przypadku należy uwzględnić nazwany parametr we Where właściwości, która działa jako symbol zastępczy wartości. Następnie dodasz parametr o pasującej nazwie do kolekcji WhereParameters .

Alternatywnie można ustawić AutoGenerateWhereClause właściwość na true i zdefiniować parametry w kolekcji WhereParameters . AutoGenerateWhereClause Gdy właściwość ma truewartość , nie musisz uwzględniać nazwanych parametrów we Where właściwości . Zamiast tego kontrolka LinqDataSource automatycznie generuje klauzulę Where z parametrów we WhereParameters właściwości .

Aby uzyskać więcej informacji na temat filtrowania danych, zobacz Przewodnik: wybieranie i filtrowanie podzestawu danych za pomocą kontrolek LinqDataSource i GridView.

Dotyczy