将变量传递给datatable的select方法但产生空结果

问题描述 投票:0回答:2

我正在使用以下代码将filename变量传递给DataTable Select语句。但返回的结果为null。

var filteredDataRows2 = dt.Select("Status = 'Valid' AND Filename ='"+filename+"'");

我做错了什么?请指教。

更新:Datatable dt包含值。文件名中有多个空格eg:my cool file 2018..,这可能是问题吗?

c# .net select datatable
2个回答
1
投票

首先,检查数据表中的数据是否有任何数据!如果你想用你的条件得到它,那么用这个语句测试它。

filteredDataRows2 = dt.Select(String.Format("Status = Valid AND Filename = '{0}'", filename));

1
投票

请在DataTable本身显示相关数据;我创建了以下最小示例,但无法重现您遇到的行为。


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

table.Rows.Add("Valid", "C:\\Test File With Spaces.txt");
table.Rows.Add("Valid", "C:\\Test File.txt");
table.Rows.Add("Invalid", "C:\\Test File With Spaces.txt");
table.Rows.Add("Valid", "C:\\Test.txt");

string filename = "C:\\Test File With Spaces.txt";

var allRows = table.Select(); // Expected Rows: 4 Actual Rows: 4
var filteredRows = table.Select("Status = 'Valid'"); // Expected Rows: 3 Actual Rows: 3
var filteredRows2 = table.Select($"Status = 'Valid' AND Filename = '{filename}'"); // Expected Rows: 1 Actual Rows: 1
© www.soinside.com 2019 - 2024. All rights reserved.