Я никогда не находил изящный способ сделать это, поэтому мне интересно, какие методы предпочитают другие разработчики (для производительности, удобочитаемости и т. Д.).DataTable.Select using оператор IN
Есть ли способ использовать оператор LIKE в функции DataTable.Select(), основываясь на результатах запроса на другой DataTable. Например, в SQL Server, синтаксис будет:
Select SomeValue
From Table1
WHERE MyField IN
(Select SomeField From Table2 Where SomeColumn = SomeFilterVariable)
Я знаю, что с точки зрения кодирования, это очень простой запрос, чтобы сделать против БД, но это делается в приложении, где это делать этот способ привел бы к сотням тысяч вызовов на сервер из-за количества используемых вычислений. Я приурочил его, и гораздо лучше сразу получить все данные и использовать DataTable.Select() или DataTable.Compute(), чтобы получить нужные мне результаты.
Я открыт для чего угодно, включая LINQ для наборов данных и т. Д. Чего мне действительно нужно избегать, это много поездок на сервер.
Это будет идти на сервер, чтобы выполнить это, правда? Я специально стараюсь избегать поездок на сервер БД и вместо этого сначала получать данные (целые таблицы), а затем выполнять подобные запросы против встроенной памяти DataTable (часть DataSet). Хотя я проголосую за хороший синтаксис Linq, который я мог бы использовать в другой ситуации, когда ограничение производительности при поездках по DB не так ужасающе. – David
Он пойдет в базу данных, если коллекции (db.Table1 & db.Table2) являются объектами таблицы. Если они собираются в regaulr, они будут работать в памяти. Синтаксис должен оставаться неизменным. –
Вы правы ... Спасибо. – David