为什么dataTable.Select总是返回空结果?

时间:2016-04-07 10:57:57

标签: c# asp.net

var tmpTable = dt.Select("strText IN('" + strZipList + "')");
if (tmpTable.Any())
{
dt = tmpTable.CopyToDataTable();
}

dt = DataTable和 strText的类型为string strZipList = string('1','2',.... etc)

编辑: DataTable结构创建为:

private DataTable CreateListTabel()
{
    DataTable _dtList = new DataTable();
    DataColumn dc1 = new DataColumn("strText", typeof(String));
    DataColumn dc2 = new DataColumn("strValue", typeof(String));
    DataColumn dc3 = new DataColumn("isSelected", typeof(Boolean));
    DataColumn dc5 = new DataColumn("intSrNo", typeof(Int32));
    DataColumn dc6 = new DataColumn("intID", typeof(Int32));
    DataColumn dc7 = new DataColumn("isExcluded", typeof(Boolean));
    DataColumn dc8 = new DataColumn("isDisabled", typeof(Boolean));
    _dtList.Columns.Add(dc1);
    _dtList.Columns.Add(dc2);
    _dtList.Columns.Add(dc3);
    _dtList.Columns.Add(dc5);
    _dtList.Columns.Add(dc6);
    _dtList.Columns.Add(dc7);
    _dtList.Columns.Add(dc8);
    _dtList.AcceptChanges();
    return _dtList;
}

哪里出错?

2 个答案:

答案 0 :(得分:1)

假设您的搜索列表为List<string>。在这种情况下,您可以在此示例中进行搜索(抱歉,在您解释表结构之前我写了一个示例)。

另外,您可以使用LINQ进行搜索,如另一行所示 如果您使用string变量进行选择,请查看第三行。 希望这有帮助

DataTable table = new DataTable();
table.Columns.Add("column", typeof(string));

table.Rows.Add("1");
table.Rows.Add("2");
table.Rows.Add("2");
table.Rows.Add("3");
table.Rows.Add("4");
table.Rows.Add("4");

List<string> searchList = new List<string> { "1", "2" };
string searchString = "1, 2";

//DataTable.Select(string) example
var filteredTable = table.Select("column in ("  + string.Join(", ", searchList.ToArray()) + ")");
//LINQ
var filteredTable2 = table.AsEnumerable().Where(row => searchList.Contains(row.Field<string>("column"))).CopyToDataTable();
//using string for search
var filteredTable3 = table.Select("column in (" + searchString + ")");

答案 1 :(得分:0)

您能否更具体地使用strZipList字符串格式?

  

strZipList = string(&#39; 1,&#39;,&#39; 2&#39;,....等)

应该像'1, 2, 3 ...',而不是'1', '2', '3'...

<强> OOPS! 我的意思是: 它应该像'1', '2', '3' ...',而不是'1,','2'

顺便说一句,一定要检查你的琴弦是否完全相同(当没有额外的空格等等时)。 '1'' 1'不同(查看额外的空格......)