【问题标题】:Combining 2 lists of diffrent types into 1 based on an ID using LINQ使用 LINQ 根据 ID 将 2 个不同类型的列表组合为 1 个
【发布时间】:2019-09-20 14:48:22
【问题描述】:

您好,我正在尝试将这 2 个列表合并为 1 个。

List<Entry> testing = new List<Entry>();
List<Tool> yes = new List<Tool>();

foreach (var p in _context.Tool
   .Join(_context.Entry, 
         o => o.ToolId, 
         od => od.FktoolId, 
         (o, od) => new { o.Name, od.Measure, od.RunDate, od.User, od.V }))
{
    testing.Add(new LogEntries { 
      Measure = p.Measure, 
      V = p.V, 
      RunDate = p.RunDate, 
      User = p.User});

    yes.Add(new Tool { 
      Name = p.Name });
}

所以我选择这两个列表,因为我希望一个表中的名称与另一个表连接。然后我将列表转换为 JSON

ViewBag.Testing = JsonConvert.SerializeObject(testing);

我只是从测试列表中获取数据,但我希望根据工具 ID 将列表“是”中的名称放入列表“测试”中。

所以我可以将名称推送到列表中还是有办法合并它们。由于它们是不同的类型,我无法连接或相交。

所以我现在提取的数据是

[{ 度量:“1”,

V:3,

运行日期:“08/12/19”,

用户:“测试用户”}]

我希望它看起来像这样

[{ 度量:“1”,

V:3,

运行日期:“08/12/19”,

用户:“测试用户”,

名称:“龙”}]

【问题讨论】:

  • 旁注:你为什么要序列化这些值?如果您在视图中使用数据,则应将数据投影到具体类中。

标签: c# json list asp.net-core


【解决方案1】:

在您的Join 语句中,您已经在创建组合对象。你为什么不把这些组合的对象放在一个列表中并序列化呢?

var list = _context.Tool
    .Join(_context.Entry, 
          o => o.ToolId, 
          od => od.FktoolId, 
          (o, od) => new { od.Measure, od.V, od.RunDate, od.User, o.Name })
    .ToList();

ViewBag.Testing = JsonConvert.SerializeObject(list);

【讨论】:

  • @KratosMafia - 仅供参考,您不必在联接操作中创建匿名类型,您也可以创建 LogEntries 类 - 因此您可以将行 (o, od) =&gt; new { od.Measure, … } 更改为 (o, od) =&gt; new LogEntries() { Measure = od.Measure, … };
猜你喜欢
  • 2015-04-10
  • 2016-08-14
  • 2022-12-18
  • 1970-01-01
  • 2020-07-01
  • 1970-01-01
  • 2013-03-24
  • 2014-07-22
  • 2012-04-13
相关资源
最近更新 更多