小编T0m*_*mba的帖子

如何更有效地编写C#lamba查询

有没有办法缩短这三个lambda表达式?现在我需要三个步骤才能得到结果.

首先,我查找属于"某人"的所有目标.然后,我在链接表中查找属于这些目标的所有projectId.最终的lambda按其id返回所有项目.

我不禁想到有一种更有效的方式,但我似乎找不到它......

public async Task<List<Project>> GetProjectsFromSomeone(string someone) {
    var targetIds = from target in Context.Targets
                     where target.Someone.ToLower().Contains(someone.ToLower())
                     select target.Id;

    var projectIds = from pt in Context.ProjectTargets
                 where targetIds.Any(id  => id == pt.TargetId)
                 select pt.ProjectId;

    var projects = from prj in Context.Projects
                where projectIds.Any(id => id == prj.Id)
                select prj;

    return await projects.ToListAsync(); 
}

public class ProjectTarget
{
    public int ProjectId { get; set; }
    public int TargetId { get; set; }

    public Project Project { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

c# lambda

4
推荐指数
1
解决办法
86
查看次数

标签 统计

c# ×1

lambda ×1