Вот решение без цикла for
, но, к сожалению, и без параметризованного оператора SQL:
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);
}
}
Обратите внимание, что использование select *
считается плохой практикой.
изменить Вот новый код, потому что ваш список имеет тип System.Web.UI.MobileControls.List
string sql = String.Format("SELECT * FROM Table WHERE ID IN ({0})",
listColumns.ListItem.Value);
edit 2 Я взял код из вашего комментария:
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);
Я предполагаю, что у вас есть это в раскрывающемся списке измененных событий или что-то в этом роде? и в вашем раскрывающемся списке есть строка типа «1,5,6,9» в значении. Если все мои предположения верны, вы можете использовать:
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);
20.10.2014
MobileControls
, а типа System.Collections.Generic.List msdn.microsoft.com/en-us/library/6sh2ey19%28v=vs.110%29.aspx 20.10.2014The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231
msdn.microsoft.com/en-us/library/ 20.10.2014