根据一列的值从Datatable中区分行.而不是所有列

本文关键字:中区 Datatable 一列 | 更新日期: 2023-09-27 17:54:17

我有一个数据表,我想根据一列的值获得不同的行,而不是根据数据表行中的所有列获得不同的行。因为我们可以得到如下不同的行

datatableName.DefaultView.ToTable("true","ColName");

因为在ToTable()中我们必须指定要显示的所有列。请帮助我,这样我就可以得到不同的行显示所有列,只有一列是用来获得不同的行。

示例行,我有如下

ID Application English Spanish German
1  sam         thnks   thnkd   thkng
2  smp         thnks   thnke   thnkp
3  anp         same    same    same

我想得到所有这些行有不同的西班牙语/德语列值对英语列值.....

在这方面的帮助将是非常感激的……

Thanks in advance

根据一列的值从Datatable中区分行.而不是所有列

如果您正在寻找如何查找列不匹配的行,这很容易

SELECT * FROM table WHERE column2 != column3

但是对于一个真正不同的,你必须在你需要的所有列上运行distinct,因为distinct意味着行不相同。

你也可以在两个列上有一个不同的子选择,然后如果你喜欢,在其余的列中加入。

当你说"我想得到所有的行,其中有不同的西班牙语/德语列值对英语列值…",这不是什么DISTINCT的意思,这是一个过滤器。

你可以这样做:

datatableName.DefaultView.RowFilter = "English <> German";
DataTable result = datatableName.DefaultView.ToTable("differentEngGer");
datatableName.DefaultView.RowFilter = null; //reset the view to not filter anything

你可以做

var x = (from r in dt.AsEnumerable() select r["ABC"]).Distinct().ToList(); //dt is the datatable

希望对您有所帮助

从MSDN论坛这里得到答案

你可以试试下面的代码。

datatableName.DefaultView.ToTable("true","ID","Application","English","Spanish","German");