我有以下表格: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 ;
}