Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在使用将Datatable中的字符串更改为Int。Select语句无法将字符串转换为Int_C#_.net_Datatable_Datarow - Fatal编程技术网

C# 正在使用将Datatable中的字符串更改为Int。Select语句无法将字符串转换为Int

C# 正在使用将Datatable中的字符串更改为Int。Select语句无法将字符串转换为Int,c#,.net,datatable,datarow,C#,.net,Datatable,Datarow,我克隆了一个数据表,并最终添加了许多模型支持的属性 当我使用dotnetfiddle.net进行沙盒/操场工作时,我注意到的一件事是,我没有使用数据类型为int的重要ID列 现在我已经把它加进去了 我正在从 foreach (string id in distinctRows) 到 我真的一点也不懂这行代码 var rows = dt.Select("ID = '" + id + "'"); 当然,现在它从一个字符串变成了一个int,这将是一个问题,但我如何修复它呢 public int i

我克隆了一个数据表,并最终添加了许多模型支持的属性

当我使用dotnetfiddle.net进行沙盒/操场工作时,我注意到的一件事是,我没有使用数据类型为int的重要ID列

现在我已经把它加进去了

我正在从

foreach (string id in distinctRows)

我真的一点也不懂这行代码

var rows = dt.Select("ID = '" + id + "'");
当然,现在它从一个字符串变成了一个int,这将是一个问题,但我如何修复它呢

public int id { get; set; }
dotnetfiddle中的代码


这段代码

....Select(k => k[0] + "").....
将枚举行的第一列作为integer类型的ID字段,并使用带空字符串的+运算符。当应用于整数和字符串时,将转换字符串中的所有内容。然后将生成的字符串添加到枚举中,以在数组中返回和转换

因此,结果var distinctRows只是一个字符串数组。 当然,不能使用带有Int32的foreach遍历字符串集合

如果删除该运算符和空字符串,代码将正常工作

var distinctRows = dt.DefaultView
                     .ToTable(true, "ID")
                     .Rows.OfType<DataRow>()
                     .Select(k => k[0])
                     .ToArray();

你能澄清你正试图解决的问题吗?我认为您的.Select调用出现错误。它无法将字符串转换为int。但您的问题并不清楚。顺便说一句:ID='+ID+'有效无论ID是字符串还是int,编译器都会自动为您调用.ToString。
....Select(k => k[0] + "").....
var distinctRows = dt.DefaultView
                     .ToTable(true, "ID")
                     .Rows.OfType<DataRow>()
                     .Select(k => k[0])
                     .ToArray();