Hier is een oplossing zonder een for
loop, maar helaas ook zonder een geparametriseerd SQL-statement:
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);
}
}
Houd er rekening mee dat het gebruik van select *
wordt beschouwd als een slechte gewoonte
bewerken Hier is wat nieuwe code omdat uw lijst van het type System.Web.UI.MobileControls.List
is
string sql = String.Format("SELECT * FROM Table WHERE ID IN ({0})",
listColumns.ListItem.Value);
bewerk 2 Ik heb de code uit je opmerking overgenomen:
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);
Ik neem aan dat je dit in de vervolgkeuzelijst hebt gewijzigd evenement of zoiets? en je vervolgkeuzelijst heeft een tekenreeks als "1,5,6,9" in de waarde. Als al mijn aannames correct zijn, kun je gebruiken:
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);