sql >> Database teknologi >  >> RDS >> Sqlserver

Vælg Forespørgsel med Hvor-tilstand afhængigt af listeværdier i asp.net

Her er en løsning uden for loop, men desværre også uden en parameteriseret SQL-sætning:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;

public class test {
  public static void Main(string[] args)
  {
    //List<int> listColumns = new List<int>(){ 1, 5, 6, 9};
    System.Collections.Generic.List<int> listColumns = new System.Collections.Generic.List<int>(){ 1, 5, 6, 9};
    string s = String.Join(", ", listColumns.Select(x => x.ToString()));

    string sql = String.Format("SELECT * FROM Table WHERE ID IN ({0})", s);
    Console.WriteLine(sql);
  }
}

Bemærk venligst, at brug select * betragtes som en dårlig praksis

rediger Her er lidt ny kode, fordi din liste er af typen System.Web.UI.MobileControls.List

string sql = String.Format("SELECT * FROM Table WHERE ID IN ({0})", 
                 listColumns.ListItem.Value);

rediger 2 Jeg har taget koden fra din kommentar:

list.Items.Clear(); 
string values = DropDownList4.SelectedValue; 
string[] words = values.Split(','); 

foreach (string s in words) 
    if (s != "" && s != string.Empty && s != null)     
        list.Items.Add(s);

Jeg gætter på, at du har dette på rullemenuen ændret begivenhed eller noget? og din dropdown har en streng som "1,5,6,9" i værdien. Hvis alle mine antagelser er korrekte kan du bruge:

System.Collections.Generic.List<int> selectedValues = new     System.Collections.Generic.List<int>();

foreach (string s in words)
    if (!String.IsNullOrWhiteSpace(s))
        selectedValues.Add(Convert.ToInt32(s));
string ids = String.Join(", ", selectedValues.Select(x => x.ToString()));
string sql = String.Format("SELECT * FROM Table WHERE ID IN ({0})", ids);


  1. SQL, Unikke og Primære nøgler

  2. NodeJS MySQL:mål forespørgsels eksekveringstid

  3. MySQL matematiske funktioner (fuld liste)

  4. Fejl af værdi <br af typen java.lang.String kan ikke konverteres til JSONObject