从DataTable获取不同的字符串列表

时间:2017-01-24 19:50:43

标签: c#

为了减少代码量,是否可以将它组合在一行中 - 我将DataTable列转换为字符串列表,但我只想要该列表中的不同项(有多列,所以有时列将有多个值,其中一个赢得了

List<string> column1List = returnDataTable.AsEnumerable().Select(x => x["Column1"].ToString()).ToList();
var distinctColumn1 = (from distinct1 in column1List select distinct1).Distinct();

上述作品,但是是额外的一行。由于distinct是列表中的一个选项,我尝试了:

List<string> column1List = (returnDataTable.AsEnumerable().Select(x => x["Column1"].ToString()).ToList()).Distinct();

然而,这些错误,所以看起来在从DataTable(?)转换的列表上不能调用。

只是好奇是否可以将DataTable转换为字符串列表,并且只能在一行中获取不同的值。可能无法实现。

2 个答案:

答案 0 :(得分:3)

Distinct会在您的情况下返回IEnumerable<TSource>,并返回IEnumerable<String>,并且您尝试在输出中获取List<String>

您需要更改

中的代码
List<string> column1List = (returnDataTable.AsEnumerable().Select(x => x["Column1"].ToString()).ToList()).Distinct();


List<string> column1List = (returnDataTable.AsEnumerable().Select(x => x["Column1"].ToString()).Distinct().ToList();

答案 1 :(得分:3)

使用System.Linq你可以使用类似的东西

my_enumerable.GroupBy(x => x.Column1).Select(x => x.First).ToList()