当前位置:  开发笔记 > 编程语言 > 正文

具有多个条件的数据表选择

如何解决《具有多个条件的数据表选择》经验,为你挑选了4个好方法。

我有一个包含4列A,B,C和D的数据表,因此A,B和C列的特定值组合在数据表中是唯一的.

目标:为列A,B和C的给定值组合找到列D的值.

我想循环数据行集应该这样做.有没有办法使用Datatable.Select()来实现这一目标?更具体一点 - 我可以在选择过滤器中有多个条件,即逻辑AND运算符连接每个列A,B和C的条件.



1> Michael Petr..:

是的,该DataTable.Select方法支持布尔运算符的方式与在"真正的"SQL语句中使用它们的方式相同:

DataRow[] results = table.Select("A = 'foo' AND B = 'bar' AND C = 'baz'");

有关DataTable 方法支持的语法,请参阅MSDN中的DataColumn.ExpressionSelect.



2> womp..:

你必须使用DataTable.Select()?我更喜欢为这种事写一个linq查询.

var dValue=  from row in myDataTable.AsEnumerable()
             where row.Field("A") == 1 
                   && row.Field("B") == 2 
                   && row.Field("C") == 3
             select row.Field("D");



3> JLWarlow..:

我发现有太多而且会返回不正确的结果(无论如何,对于.NET 1.1)

DataRow[] results = table.Select("A = 'foo' AND B = 'bar' AND C = 'baz' and D ='fred' and E = 'marg'"); 

在我的情况下,A是表中的第12个字段,而select实际上忽略了它.

但是,如果我这样做

DataRow[] results = table.Select("A = 'foo' AND (B = 'bar' AND C = 'baz' and D ='fred' and E = 'marg')"); 

过滤器工作正常!



4> NNNN..:

试试这个,
我想,这是一个简单的解决方案.

int rowIndex = table.Rows.IndexOf(table.Select("A = 'foo' AND B = 'bar' AND C = 'baz'")[0]);
string strD= Convert.ToString(table.Rows[rowIndex]["D"]);

确保,A,B和C列的值组合在数据表中是唯一的.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有