Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chọn Truy vấn với điều kiện Where tùy thuộc vào giá trị danh sách trong asp.net

Đây là một giải pháp không có for nhưng không may là không có câu lệnh SQL được tham số hóa:

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

Xin lưu ý rằng sử dụng select * được coi là một thực hành xấu

chỉnh sửa Đây là một số mã mới vì danh sách của bạn thuộc loại System.Web.UI.MobileControls.List

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

chỉnh sửa 2 Tôi đã lấy mã từ nhận xét của bạn:

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

Tôi đoán rằng bạn có cái này trên menu thả xuống đã thay đổi sự kiện hay gì đó? và danh sách thả xuống của bạn có một chuỗi như "1,5,6,9" trong giá trị. Nếu tất cả các giả định của tôi là đúng, bạn có thể sử dụng:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cột văn bản không lưu trữ nhiều hơn 8000 ký tự

  2. chuỗi tổng hợp tsql cho nhóm theo

  3. Máy chủ SQL phiên bản 655

  4. Cách bỏ Ràng buộc khóa ngoại trong Cơ sở dữ liệu SQL Server cho tất cả các bảng - Hướng dẫn SQL Server / TSQL Phần 72

  5. Cách kết hợp nhiều hàng LineString thành một tập hợp hàng duy nhất