linq 如何left join (帶測試代碼)

JirlangLianHongCh 2014-01-18 03:46:09

linq left join 測試代碼 有數據EXCEL表 謝謝大神幫忙解決下:
2個datatable結果集合併(LEFT JOIN)
excel2003測試表
SUVZHG:
http://pan.baidu.com/s/1i39Nkln
TOPRC:
http://pan.baidu.com/s/1gd417Xp

Function SUVZHG() As DataTable
Dim fileName As String
Dim kk As New OpenFileDialog()
kk.FileName = "SUVZHG"
kk.Filter = "Excle恅璃(*.xls)|*.xls"
If kk.ShowDialog() = DialogResult.OK Then
fileName = kk.FileName
Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & fileName & "';Extended Properties=Excel 8.0;"
Dim dr As New DataTable
Dim da As New OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn)
Try
da.Fill(dr)
SUVZHG = dr
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End If
End Function
Function TOPRC() As DataTable
Dim fileName As String
Dim kk As New OpenFileDialog()
kk.FileName = "TOPRC"
kk.Filter = "Excle恅璃(*.xls)|*.xls"
If kk.ShowDialog() = DialogResult.OK Then
fileName = kk.FileName
Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & fileName & "';Extended Properties=Excel 8.0;"
Dim dr As New DataTable
Dim da As New OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn)
Try
da.Fill(dr)
TOPRC = dr
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End If
End Function
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
Dim q = From emp In TOPRC() Group Join emc In SUVZHG() On emp("JSX") Equals emc("JSX") Into DataGroup = Group
From row In DataGroup.DefaultIfEmpty()
Select emp, Order = row
DG1.DataSource = q.CopyToDataTable
End Sub
...全文
214 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzybc 2014-01-23
  • 打赏
  • 举报
回复
Dim productList = GetProductList() 这句是什么意思? 有错误,是不是还有其它条件
JirlangLianHongCh 2014-01-20
  • 打赏
  • 举报
回复
引用 1 楼 q107770540 的回复:
给你个例子,你参考一下,我想你可以写的出来:

Public Sub Linq105()
Dim categories() = {"Beverages", "Condiments", "Vegetables", "Dairy Products", "Seafood"}

Dim productList = GetProductList()

Dim query = From c In categories _
Group Join p In productList On c Equals p.Category Into Group _
From p In Group.DefaultIfEmpty() _
Select Category = c, ProductName = If(p Is Nothing, "(No products)", p.ProductName)

For Each v In query
Console.WriteLine(v.ProductName + ": " + v.Category)
Next
End Sub



http://msdn.microsoft.com/zh-cn/vstudio/bb737909#lojoin

vb.net left join分享是美德,搞了2天,目次成功了上图

Function SUVZHG() As DataTable
Dim fileName As String
Dim kk As New OpenFileDialog()
kk.FileName = "SUVZHG"
kk.Filter = "Excle文件(*.xls)|*.xls"
If kk.ShowDialog() = DialogResult.OK Then
fileName = kk.FileName
Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & fileName & "';Extended Properties=Excel 8.0;"
Dim dr As New DataTable
Dim da As New OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn)
Try
da.Fill(dr)
SUVZHG = dr
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End If
End Function
Function TOPRC() As DataTable
Dim fileName As String
Dim kk As New OpenFileDialog()
kk.FileName = "TOPRC"
kk.Filter = "Excle文件(*.xls)|*.xls"
If kk.ShowDialog() = DialogResult.OK Then
fileName = kk.FileName
Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & fileName & "';Extended Properties=Excel 8.0;"
Dim dr As New DataTable
Dim da As New OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn)
Try
da.Fill(dr)
TOPRC = dr
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End If
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim vDRnull As DataRow = SUVZHG.Rows.Add

Dim vLINQ = From a In TOPRC.AsEnumerable
Group Join bTemp In SUVZHG.AsEnumerable
On a.Field(Of Object)("JSX") Equals bTemp.Field(Of Object)("JSX")
Into Group Let b = If(Group.FirstOrDefault Is Nothing, vDRnull, Group.FirstOrDefault)
Select New With {.JSX = a("JSX"), .TT = b("bcsm")}
DataGridView1.DataSource = vLINQ.ToArray
End Sub
JirlangLianHongCh 2014-01-19
  • 打赏
  • 举报
回复
版主
我玩了一天沒玩出來
你提供的例子我也參考過,其中
p.Category 是p("Category")意思?我用的是VB.net 2010

join linq
Dim TOPE = From cnk In Mycj.AsEnumerable() _
Join bnk In MyCon.AsEnumerable() _
On cnk("pw") Equals bnk("brand") _
Select New With {.dl = cnk("dl"), _
.pp = cnk("pp"), _
.pw = cnk("pw"), _
.bs = cnk("bs"), _
.thbs = cnk("thbs"), _
.cjje = cnk("cjje"), _
.mc = cnk("mc"), _
.歸類品牌 = cnk("歸類品牌"), _
.floor = bnk("floor"), _
.sitegrade = bnk("sitegrade"), _
.JSX = bnk("floor") & bnk("sitegrade") & cnk("pp") & cnk("dl")}
Dim TOPR As New DataTable
TOPR.Columns.Add("pp")
TOPR.Columns.Add("pw")
TOPR.Columns.Add("bs")
TOPR.Columns.Add("thbs")
TOPR.Columns.Add("cjje")
TOPR.Columns.Add("mc")
TOPR.Columns.Add("GLPP")
TOPR.Columns.Add("floor")
TOPR.Columns.Add("WZ")
TOPR.Columns.Add("JSX")
For Each Mytables In TOPE
Dim MyRows = TOPR.NewRow()
MyRows("pp") = Mytables.pp
MyRows("pw") = Mytables.pw
MyRows("bs") = Mytables.bs
MyRows("thbs") = Mytables.thbs
MyRows("cjje") = Mytables.cjje
MyRows("mc") = Mytables.mc
MyRows("GLPP") = Mytables.歸類品牌
MyRows("floor") = Mytables.floor
MyRows("WZ") = Mytables.sitegrade
MyRows("JSX") = Mytables.JSX
TOPR.Rows.Add(MyRows)
Next
上面代碼測試通過
若直接

From p In Group.DefaultIfEmpty() select p


q107770540 2014-01-18
  • 打赏
  • 举报
回复
给你个例子,你参考一下,我想你可以写的出来:
Public Sub Linq105()
    Dim categories() = {"Beverages", "Condiments", "Vegetables", "Dairy Products", "Seafood"}
 
    Dim productList = GetProductList()
 
    Dim query = From c In categories _
                Group Join p In productList On c Equals p.Category Into Group _
                From p In Group.DefaultIfEmpty() _
                Select Category = c, ProductName = If(p Is Nothing, "(No products)", p.ProductName)
 
    For Each v In query
        Console.WriteLine(v.ProductName + ": " + v.Category)
    Next
End Sub
http://msdn.microsoft.com/zh-cn/vstudio/bb737909#lojoin
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧