尝试从dt中选择不同的行,并将结果放回到相同的dt中。我认为这可以在一个声明中完成。这是我正在尝试的内容:
dt = (DataTable)((from row in dt.AsEnumerable() select row.Field<string>("VNDR_ID")).Distinct().ToList());
我怎样才能做到这一点?感谢。
答案 0 :(得分:1)
LINQ语句
(from row in dt.AsEnumerable() select row.Field<string>("VNDR_ID")).Distinct()
返回IEnumerable<string>
而不是DataTable
,因此投射会失败。
您是否有理由将结果放入另一个DataTable
?我只是使用查询返回的IEnumerable
,或者如果您希望立即评估查询,则将其转换为List<string>
ToList()
(以便您可以更改内容dt
)
答案 1 :(得分:1)
您无法将其强制转换为DataTable。 Linq将根据您的选择输出IEnumerable<string>
。要将其加载到DataTable中,您必须:
答案 2 :(得分:1)
dtSuplr = (from suplr in dtSuplr.AsEnumerable()
select suplr).Distinct().CopyToDataTable();