C# 整理lambda表达式

C# 整理lambda表达式,c#,visual-studio,lambda,C#,Visual Studio,Lambda,下面的代码给出了我需要的结果,但是有人能建议如何更好地编写它吗?我相信有一种更有效的方法。 谢谢 ?我建议为Visual Studio安装ReSharper。它将帮助你处理这些事情。你说的“更有效的方式”是什么意思?更快的代码执行(这实际上是效率)或更少的代码编写?响应@AdamJachocki所说的-这里的理想是能够执行单个操作(而不是N+2);然而,这并不一定可以通过存储库API轻松获得。这就是为什么当性能是一个因素时,我通常更喜欢非常具体的方法,也就是说,我可以编写一些SQL,直接通过数据

下面的代码给出了我需要的结果,但是有人能建议如何更好地编写它吗?我相信有一种更有效的方法。 谢谢


我建议为Visual Studio安装
ReSharper
。它将帮助你处理这些事情。你说的“更有效的方式”是什么意思?更快的代码执行(这实际上是效率)或更少的代码编写?响应@AdamJachocki所说的-这里的理想是能够执行单个操作(而不是N+2);然而,这并不一定可以通过存储库API轻松获得。这就是为什么当性能是一个因素时,我通常更喜欢非常具体的方法,也就是说,我可以编写一些SQL,直接通过数据库中的连接来实现这一点,只传入两个GUI,只返回1或0。因此,我想这里的理想情况是:
return\u someRepo.IsVehicleInAnyClientLocation(\u vID,organizationid)OP要求更有效的方法。LINQ永远不会像standard那样高效loop@Adam哦,求你了。。。当您完成了n+2存储库操作时,您如何迭代它是完全不相关的,假装您担心效率是愚蠢的。所以在我看来,剩下的是另一种效率:拥有更少、更简单代码的效率。OP询问“写得更好”和“整理”——我认为这是一个公平的尝试。有趣的是,我可能是第一个为性能编写丑陋代码的人,但那正是我处理纯内存数据的时候。去DB:忘掉其他一切。@AdamJachocki不清楚他所说的高效是什么意思,因为标题感谢这个建议,我会简单地尝试一下。看起来答案是OP想要的。所以我会尽快提高成绩。
private bool IsLocation(Guid _vID, Guid OrganisationId)
{
    var vehicle = _vehilceRepository.GetSingle(c => c.vehicleId == _vID);
    var clients = _clientRepository.GetList(c => c.OrganisationID == OrganisationId);

    foreach (var client in clients)
    {
        var locations = _LocationRepository.GetList(c => c.ClientID == client.ClientID);
        if (locations.Count > 0)
        {
            foreach (var location in locations)
            {
                if (location.LocationId == vehicle.LocationID)
                {
                    return true;
                }
            }
        }
    }
    return false;
}
var vehicle = _vehilceRepository.GetSingle(c => c.vehicleId == _vID);
var clients = _clientRepository.GetList(c => c.OrganisationID == OrganisationId);
return clients.SelectMany(client => _LocationRepository.GetList(
                c => c.ClientID == client.ClientID))
       .Any(location => location.LocationId == vehicle.LocationID);