为了减少代码量,是否可以将它组合在一行中 - 我将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转换为字符串列表,并且只能在一行中获取不同的值。可能无法实现。
答案 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()