如何从异步方法返回 Linq 查询结果



我正在开发一个从数据库中获取数据的API,我正在使用带有实体框架的Azure函数。到目前为止,我可以轻松地从一个表中获取数据而没有任何问题,当我尝试合并多个表并返回结果时,问题就开始了。 我的理想目标是从 Person 表中返回一些信息,并结合配置文件表中的一些信息。 我收到一个错误,指出它无法隐式转换类型,即使认为我已经创建了一个新类型来将其设置为函数的返回类型。

这是我的数据库图:

数据库图像

我的上下文类:

public virtual DbSet<Profile> Profile { get; set; }
public virtual DbSet<ProfileSocialMedia> ProfileSocialMedia { get; set; }
public virtual DbSet<SocialMediaPlatform> SocialMediaPlatform { get; set; }
public Task<List<Profile>> GetProfileList()
{
var profiles = Profile.ToListAsync();
return profiles;
}

我的 HttpTrigger:

[FunctionName(nameof(GetProfiles))]
public Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "get-profiles")]
HttpRequest req,
ILogger log) => _helper.HandleAsync(async () =>
{
var leaders = await _context.GetProfileList();
return new OkObjectResult(leaders);
});

我尝试了以下代码:

我的尝试:

public Task<List<Profile>> GetProfileList()
{
var profiles = Person.Join(Profile, person => person.Id, profile => profile.PersonId,
(person, profile) => new
{
person.Id,
person.FirstName,
person.LastName,
profile.PreviousOccupation
}).ToListAsync();
return profiles;
}

好的,所以为了实现我想要实现的目标,我必须创建一个我想返回的类型的新实例,如下所示:

public Task<List<LeaderProfileModel>> GetProfileList()
{
var profiles = Person.Join(Profile, person => person.Id, profile => profile.PersonId,
(person, profile) => new {person, profile})
.Where(f => f.person.FirstName == "Name" && f.person.LastName == "Nastname")
.Select(lpm => new LeaderProfileModel()
{
Id = lpm.person.Id,
FirstName = lpm.person.FirstName,
LastName = lpm.person.LastName,
PreviousOccupation = lpm.profile.PreviousOccupation
}).ToListAsync();
return profiles;
}

最新更新