基于一列的值而不是所有列,来自Datatable的不同行

时间:2011-05-03 12:06:36

标签: c#

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

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

我希望得到所有那些具有不同西班牙语/德语Cloumn值的行与英语列值.....

非常感谢这方面的帮助......

提前致谢

4 个答案:

答案 0 :(得分:0)

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

SELECT * FROM table WHERE column2 != column3

但是对于一个真正的区别,你必须对你需要的所有列进行干扰,因为这些列的行不相同。

你也可以在2个柱子上有一个不同的子选择,然后如果你愿意,可以加入其余的列。

答案 1 :(得分:0)

当你说“我想要获得所有那些具有不同西班牙语/德语Cloumn值与英语列值...”的行时,这不是DISTINCT的意思,那就是过滤器。

你可以这样做:

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

答案 2 :(得分:-1)

你可以做到

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

希望这个帮助

答案 3 :(得分:-1)

msdn forum here获得答案

您可以尝试使用以下代码。

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