Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LINQ (Language-Integrated Query) > Выборка значений по двум полям одновременно


Автор: swetik1981 26.1.2013, 23:01
Имеется таблица, из которой необходимо выбрать только те строки, значения в одном из двух полей которых встречаются в некотором заданном массиве. Чтобы было понятней, привожу образец таблицы и массива:


Код

Table1

id     Field1      Field2

1      морковь     молоко
2      колбаса     картофель 
3      рыба        колбаса
4      капуста     яблоки 
5      свекла      морковь




Код

Array1

перец
огурцы
молоко
рыба
коЛбаса
пиво



Делаю выборку значений на совпадение по одному полю:

Код

Dim query= From dt in Table1 Join dt1 in Array1 On dt.Field(Of String)("Field1") Equals dt1 Select dt
Dim endTable=query.CopyToDataTable


выдаст:

Код

endTable

id     Field1      Field2

2      колбаса     картофель 
3      рыба        колбаса



Аналогично можно устроить поиск по второму полю:


Код

Dim query= From dt in Table1 Join dt1 in Array1 On dt.Field(Of String)("Field2") Equals dt1 Select dt
Dim endTable=query.CopyToDataTable


выдаст:

Код

endTable

id     Field1      Field2

1      морковь     молоко
3      рыба        колбаса




А как задать выборку, чтобы поиск значений осуществлялся одновременно под двум полям и получить в результате:


Код

1      морковь     молоко
2      колбаса     картофель 
3      рыба        колбаса


Автор: boevik 2.3.2013, 21:19
Код

Dim query= From dt in Table1 
From dt1 in Array1 
Where dt.Field(Of String)("Field1") == dt1 || dt.Field(Of String)("Field2") Equals dt1 
Select dt

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)