sql >> Databáze >  >> RDS >> Sqlserver

Vyberte dotaz s podmínkou Where v závislosti na hodnotách seznamu v asp.net

Zde je řešení bez for smyčky, ale bohužel i bez parametrizovaného SQL příkazu:

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);
  }
}

Vezměte prosím na vědomí, že pomocí select * je považováno za špatný postup

upravit Zde je nový kód, protože váš seznam je typu System.Web.UI.MobileControls.List

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

úprava 2 Převzal jsem kód z vašeho komentáře:

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);

Předpokládám, že to máte v rozbalovací nabídce změněná událost nebo tak něco? a vaše rozbalovací nabídka má v hodnotě řetězec jako "1,5,6,9". Pokud jsou všechny mé předpoklady správné, můžete použít:

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 pro kontrolu, zda je databáze prázdná (žádné tabulky)

  2. Připojení aplikace VB6 oracle 12 64bit

  3. SQL UNION FOR výstupní sloupec názvu XML

  4. jak vytvořit cizí referenční klíč pro primární klíč kompozice