LinqDataSource.Where Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger ett värde som anger vilka villkor som måste vara sanna för att en post ska inkluderas i hämtade data.
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
Egenskapsvärde
En sträng som används för att skapa Where-satsen.
Implementeringar
Exempel
I följande exempel visas hur du filtrerar data som returneras från en fråga baserat på ett statiskt villkor.
<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>
I följande exempel visas hur du filtrerar data baserat på ett värde som tillhandahålls av användaren vid körning. I det här exemplet visas en DropDownList kontroll och en GridView kontroll på sidan. När användaren väljer ett av värdena i DropDownList kontrollen LinqDataSource väljer kontrollen endast från tabellen Products rader som har UserPrice värden som är lika med det valda värdet. Kontrollen GridView visar sedan filtrerade data.
<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>
Kommentarer
Du använder Where egenskapen för att ange villkoren för posten som ska returneras från en fråga. Syntaxen Where för egenskapen är samma som syntaxen för en LINQ Where-sats i C#.
Du anger ett uttryck som resulterar i ett booleskt värde, och om uttrycket utvärderas till true för en viss rad inkluderas raden i resultatuppsättningen. Uttryck består av kolumnnamn, jämförelseoperatorer och värden att jämföra med, som du ser i följande exempel:
<asp:LinqDataSource ... Where="Price > 50"...>
Om du vill ange flera uttryck som är länkade med logiska AND eller OR operatorer använder && du som logisk AND-operator och || som en logisk OR-operator, som du ser i följande exempel:
<asp:LinqDataSource ... Where="Price > 50 && Price < 100"...>
<asp:LinqDataSource ... Where="Price <= 50 || Price >= 100"...>
Om du vill testa en egenskap mot ett strängvärde med literaltecken måste strängvärdet omges av dubbla citattecken. Om du vill göra detta i markering omger du satsvärdet Where inom enkla citattecken, som du ser i följande exempel:
<asp:LinqDataSource ... Where='Category = "Sports"' ... >
Om du vill testa mot ett literalt strängvärde i kod använder du escape-tecken som är lämpliga för det språk som du använder för att infoga dubbla citattecken, som du ser i följande exempel:
LinqDataSource1.Where = "Category = ""Sports"""
LinqDataSource1.Where = "Category = \"Sports\"";
Om du vill testa om en sträng är större än eller mindre än en annan sträng måste du använda metoder String för klassen i stället för att använda < eller > operatorer mellan kolumnnamnet och strängvärdet. Följande exempel visar hur du väljer rader som har kategorivärden som är mindre än, mindre än eller lika med, större än eller större än eller lika med "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' ... >
Du kan också använda andra metoder i String klassen, till exempel StartsWith, EndsWithoch Contains. Mer information om hur du jämför strängar finns i Jämföra strängar. Mer information om Where-satssyntax finns i C#-operatorer och where-satsen.
Förutom filtrering baserat på statiska värden som du definierar när du skapar webbsidan kan du filtrera baserat på dynamiska värden som utvärderas vid körning. I så fall inkluderar du en namngiven parameter i egenskapen Where som fungerar som platshållare för värdet. Sedan lägger du till en parameter som har matchande namn i WhereParameters samlingen.
Du kan också ange AutoGenerateWhereClause egenskapen till true och definiera parametrarna i WhereParameters samlingen. När egenskapen AutoGenerateWhereClause är truebehöver du inte inkludera de namngivna parametrarna i Where egenskapen.
LinqDataSource I stället genererar kontrollen automatiskt Where-satsen från parametrarna i WhereParameters egenskapen.
Mer information om hur du filtrerar data finns i Genomgång: Välja och filtrera en delmängd av data med Kontrollerna LinqDataSource och GridView.