我需要在DataTable
中尝试使用
C#.net
string sortExpression="id ASC";
string filterExpression;
DataTable dt;
DataRow[] drA;
filterExpression = "exists (select distinct id from table_b b where a.id=b.id )";
drA = dtAdvancedSearched.Select(filterExpression, sortExpression);
dt = drA .CopyToDataTable();
但这会产生错误
任何人都可以帮助我使用.net
答案 0 :(得分:2)
您可以使用linq:
bool exist = db.Ids.Any (u => u.id == "whateverID");
如果要将其与数据表一起使用,请使用Linq-To-Dataset。添加对:
的引用System.Data.DataSetExtensions
并使用:
字符串字段:
bool exist = tabla.AsEnumerable().Any(p => p.Field<string>("id") == "whatever");
对于int字段:
bool exist = tabla.AsEnumerable().Any(p => p.Field<int>("id") == 5);
答案 1 :(得分:2)
RowFilter syntax中没有exists
。
所以我建议改为使用Linq-To-DataSet
:
IEnumerable<DataRow> tableBRows = table_b.AsEnumerable();
DataTable dt = dtAdvancedSearched.AsEnumerable()
.Where(row => tableBRows.Any(b => b.Field<int>("id") == row.Field<int>("id")))
.OrderBy(row => row.Field<int>("id"))
.CopyToDataTable();
答案 2 :(得分:1)
检查数据行集合的长度。
filterExpression = "select distinct id from table_b b where a.id=b.id";
drA = dtAdvancedSearched.Select(filterExpression, shortExpression);
if(drA.Length != 0)
{
// do something...
dt = drA .CopyToDataTable();
}
修改
第一种方法不起作用,因此发布了另一种方法
DataTable dt = dtAdvancedSearched.DefaultView.ToTable(true, "Column1", "Column2");