C# 使用LINQ根据ID将2个不同类型的列表合并为1

C# 使用LINQ根据ID将2个不同类型的列表合并为1,c#,json,list,asp.net-core,C#,Json,List,Asp.net Core,您好,我正在尝试将这两个列表合并为一个 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

您好,我正在尝试将这两个列表合并为一个

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 });
}
我只从测试列表中获取数据,但我希望根据工具ID将列表“yes”中的名称输入列表“testing”

那么,我可以把这个名字推到列表中,还是有办法合并它们。因为它们是不同的类型,所以我不能相交

所以我现在提取的数据是

[{措施:“1”

五:三,

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

用户:“测试用户”}]

我希望它看起来像这样

[{措施:“1”

五:三,

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

用户:“测试用户”

名称:“龙”}]


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-仅供参考,您不必在联接操作中创建匿名类型,您也可以创建
日志条目
类-这样您就可以将行
(o,od)=>new{od.Measure,…}
更改为
(o,od)=>新日志条目(){Measure=od.Measure,…};
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);