C# 优化linq查询的更好方法

C# 优化linq查询的更好方法,c#,linq,C#,Linq,我在c#应用程序中编写了一个linq查询,以获取auth用户所属应用程序的名称 var authApplicationRepository = AuthApplicationRepository.GetAllAsList(); var authUserRepository = AuthUserRepository.GetAllAsList(); 你认为有更好、更短的方法来结合这两条线吗 //Get the name of the application the auth user belong

我在c#应用程序中编写了一个linq查询,以获取auth用户所属应用程序的名称

var authApplicationRepository = AuthApplicationRepository.GetAllAsList();
var authUserRepository = AuthUserRepository.GetAllAsList();
你认为有更好、更短的方法来结合这两条线吗

//Get the name of the application the auth user belongs to
var authUserApplicationId = authUserRepository
                            .Where(x => x.Id == userChangeRequest.AuthUserId)
                            .Select(x => x.ApplicationId)
                            .FirstOrDefault();

var authUserApplicationName = authApplicationRepository
                              .Where(x => x.Id == authUserApplicationId)
                              .Select(x => x.Description)
                              .FirstOrDefault();

您可以更进一步,执行
authUserRepository.FirstOrDefault(x=>x.Id==userChangeRequest.AuthUserId)?.ApplicationId
这如何为我提供authUserApplicationName您仍然需要两个linq查询,但每个查询都更短。您可能可以将其减少为一个带有连接的查询,但是我不确定你能得到多少。什么类型的
…存储库
变量是由“GetAll…”方法返回的<代码>IQueryable
inumerable
?如果您无法在存储库层“加入”用户和应用程序,您可以返回
字典
,仅通过O(1)个操作即可找到所需的applicationId和相应的描述。