Czy możesz mi pomóc w zrozumieniu linq? Szukam go w Google przez prawie cały dzień, ale nadal nie mogę właściwie zrozumieć architektury.
Oto problem, Mam 2 datatable z innej bazy danych i chcę się pokazać datagridview
lewe połączenie dataset
a i b w 3 kolumnach (OrderNum,OrderLine,OrderRelNum
) w sql zapytanie wygląda następująco
Select *
From dataset1 a
left join dataset2 b
on a.OrderNum = b.OrderNum
and a.OrderLine = b.OrderLine
and a.OrderRelNum = b.OrderRelNum
Pytanie brzmi, jak zrobić to zapytanie w Linq i pokazać je w datagridview?
To jest mój kod rozwiązywania, aby uzyskać właściwe zapytanie i przesłać je do datagridview
Public Sub DataSetLinq120()
strSQL = "SELECT * FROM po "
strSQL2 = "SELECT * FROM PO"
Dim DA As New OdbcDataAdapter(strSQL, Connection)
Dim DS As New DataSet
DA.Fill(DS, "Source1")
Dim DA2 As New OdbcDataAdapter(strSQL2, Connection2)
Dim DS2 As New DataSet
DA2.Fill(DS2, "Source2")
Dim dt = DS.Tables("Source1")
Dim dt2 = DS2.Tables("Source2")
Dim custQuery = (From a In dt _
Group Join b In dt2 On a!OrderNum Equals b!OrderNum _
And a!OrderLine Equals b!OrderLine _
And a!OrderRelNum Equals b!OrderRelNum _
Into Data1 = Group _
From c In Data1.DefaultIfEmpty
Select New With {
.OrderNumber = a!OrderNum,
.OrderLine = a!OrderLine,
.OrderRelNumber = a!OrderRelNum,
.Stock_Status = If(c Is Nothing, "", c.Field(Of String)("Stock_Status")),
.Comments = If(c Is Nothing, "", c.Field(Of String)("Comments"))}).ToList
DataGridView1.DataSource = Nothing
DataGridView1.DataSource = custQuery
End Sub
Odpowiedzi:
0 dla odpowiedzi № 1Oto dobry artykuł z MSDN na temat wykonywania lewych zewnętrznych sprzężeń w LINQ: https://msdn.microsoft.com/en-us/library/bb397895.aspx
Powinieneś być w stanie łatwo utworzyć z tego LEFT JOIN.
Poza tym nie jestem pewien, dlaczego w tym przykładzie nie chcesz po prostu obsługiwać lewej złączenia za pomocą SQL. Jeśli nie potrzebujesz oryginalnych zbiorów danych, nie rozumiem, dlaczego nie miałbyś tego robić bezpośrednio w SQL.