【问题标题】:DataTable joins c# - joins on datatableDataTable joins c# - 连接数据表
【发布时间】:2019-10-21 11:30:26
【问题描述】:

如何在 dataTable 中使用连接?由于我是 C# 新手,我不知道为什么我的代码不起作用。有人可以调查一下吗?

var result = from x in clientpos.AsEnumerable()
                     join y in exec_pos.AsEnumerable()
                     on new { X1 = x.Field<string>("ClientCode"), X2 = x.Field<string>("Symbol"),
                         X3 = x.Field<string>("Expirydate"), X4 = x.Field<string>("Strikeprice") , X5 = x.Field<string>("ClientCode") }
                     equals new { X1 = y.Field<string>("ClientCode"), X2 = y.Field<string>("Symbol"),
                         X3 = y.Field<string>("Expirydate"), X4 = y.Field<string>("Strikeprice") ,
                         X5 = y.Field<string>("ClientCode")
                     }
                     select x;

【问题讨论】:

  • 您是否收到任何错误或结果未达到预期结果。你能详细说明你的问题吗?
  • 您好,我没有收到任何错误,但结果变量中没有行。当我在 mysql 工作台中使用相同的查询时,它工作得很好。你能检查一下语法吗?
  • 如果您尝试手动验证,是否会根据您的 DataTable 数据记录结果?
  • 语法看起来不错,也许字符串比较样式不同?您正在尝试从 clientpos 获取所有行,它们在 4 列中与另一个表相等?
  • 数据类型与服务器中的实际表不同。谢谢大家

标签: c# linq join datatable


【解决方案1】:

联接采用以下格式。如果您需要额外的过滤,您可以在查询中添加额外的 WHERE。

var result = (from x in clientpos.AsEnumerable()
             join y in exec_pos.AsEnumerable() on x.Field<string>("ClientCode") equals y.Field<string>("ClientCode")
             select new { client = x, exec = y}).ToList();

【讨论】:

    猜你喜欢
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    相关资源
    最近更新 更多