我有以下表格:main_data和user_data

表main_data具有表user_data的外键user_id



我想返回一个列表,其中包含来自main_data表的所有列和来自表user_data的full_name列。

我已经尝试这样做,但是不幸的是我的代码无法正常工作。

public override IList<main_data> GetAllDetached()
{
    return this.context.main_data.Join(this.context.user_data,
    o => o.user_id, i => i.user_data_id, (ud, fullName) => new {
    ud.user_id, fullName.full_name }).ToList();
}


发生以下错误:


  无法隐式转换类型'System.Collections.Generic.List
  匿名类型:十进制user_id,字符串full_name'为
  'System.Collections.Generic.IList ProjectName.Model.main_data'。一个
  存在明显的挫败感(您是否缺少演员表?)

最佳答案

创建一个DTO类,其中包含两个表中要返回到结果中的那些属性:

 Class FinalResult
{
 public int user_id {get; set;}
 public string full_name {get; set;}
 }


然后在您的代码中:

 public override List<FinalResult> GetAllDetached()
{

    var result = this.context.main_data.Join(this.context.user_data,
    o => o.user_id, i => i.user_data_id, (ud, fullName) => new {
    ud.user_id, fullName.full_name }).ToList();

 var finalResult = result.Select(x => new FinalResult()
        {
            user_id = x.user_id ,
            full_name = x.full_name

        }).ToList();
        return finalResult ;
}

10-01 17:51