Запрос таблицы через ассоциацию с использованием LINQ to SQL vb.net

У меня 3 стола

CustNameTbl

_________________
| ID | CustName |
| 1  | Jel Farm |
| 2  | TSL. TRD.|
| 3  | YAZAKI   |
| 4  | TAILIN   |

ItemNameTbl

_________________
| ID | ItemName |
| 1  |    HSC   |
| 2  |    Pad   |
| 3  |Partition |
| 4  | B002001  |
| 5  |Box for B3|
| 6  |High Speed|

ItemInfoTbl

__________________________________________________
| ID | CustId | ItemId |  Qty  | Price | Remarks |
| 1  |   1    |   1    |   50  |   2   |         |
| 2  |   1    |   2    |  200  |   1   |  Set A  |
| 3  |   1    |   3    |   10  |   5   |  Set B  |
| 4  |   4    |   5    |   15  |   2   |         |
| 5  |   4    |   6    |   10  |   1   |         |
| 6  |   2    |   4    |  150  |   3   |         |

У меня две АССОЦИАЦИИ

  1. CustNameTbl как родительский ItemInfoTbl как дочерний

  2. ItemNameTbl как родительский ItemInfoTbl как дочерний

Использование Linq to Sql, Как запросить ItemInfoTbl с использованием CustNameTbl как WHERE CLAUSE и получить результат, в котором значения CustId и ItemId в ItemInfoTbl получат данные в другой таблице (CustNameTbl, ItemNameTbl)

Нравится:

____________________________________________________
| ID | CustId |  ItemId  |  Qty  | Price | Remarks |
| 4  | TAILIN |Box for B3|   15  |   2   |         |
| 5  | TAILIN |High Speed|   10  |   1   |         |

Но мой код не получил то, что я хочу

Dim CustName As String = "TAILIN"
Using CustItem As New CustItemDataContext
        Dim resultCustItem = From result In CustItem.ItemInfoTbls
                             Where result.CustNameTbl.CustName = CustName
        DataGridView1.DataSource = resultCustItem
End Using

Любая идея или ссылка для начала. Спасибо и извините за мой английский.


person user2184608    schedule 10.06.2016    source источник


Ответы (1)


Не тестировал, но могу дать представление.

Dim result = from t in  YourDatabase.ItemInfoTbl
                        join p in YourDatabase.ItemNameTbl on t.ItemID equals p.ID 
                        join c in YourDatabase.CustNameTbl on t.CustID  equals c.ID            
Where c.CustName = CustName
                        select new
                        {
                            t.ID,
                            t.CustId,
                            t.ItemID,
                            t.Qty,
                            t.Price
                         };

Полезный источник LINQ join multi table

person Sami    schedule 10.06.2016
comment
Итак, что может делать JOIN. Спасибо вам за помощь. Я прочитал присоединиться, прежде чем я просто не знаю, как его использовать. - person user2184608; 10.06.2016