我从来没有找到一个优雅的方式来做到这一点,所以我想知道其他开发人员喜欢什么方法(为了性能,可读性等)。DataTable.Select使用IN运算符
有没有办法在DataTable.Select()函数中使用LIKE运算符,基于对另一个DataTable的查询结果。例如,在SQL Server中,语法为:
Select SomeValue
From Table1
WHERE MyField IN
(Select SomeField From Table2 Where SomeColumn = SomeFilterVariable)
我知道,从编码的角度看,这是一个非常简单的查询做对DB,但这是一个应用程序正在做那里做由于计算涉及的次数多,这种方式会导致成千上万次对服务器的调用。我已经计算了它,并且一次获取所有数据并使用DataTable.Select()或DataTable.Compute()来获得我需要的结果会更好。
我对任何包括LINQ到数据集等都是开放的。我真正需要避免的是到服务器的很多次旅行。
但是,这将转到服务器来执行此操作,对吗?我特别注意避免前往数据库服务器,并首先获取数据(整个表),然后针对内存中的DataTable(DataSet的一部分)执行类似的查询。尽管我会为此选择一个好的Linq语法,我可以在另一个DB往返性能损失并不那么可怕的情况下使用。 – David 2010-07-28 17:22:47
如果集合(db.Table1&db.Table2)是Table实体,它将转到数据库。如果他们是regaulr收集,它会在记忆中工作。语法应该保持不变。 – 2010-07-28 18:00:34
你是对的...谢谢。 – David 2010-07-29 15:27:50