C# linq中实现复杂查询的最佳方法

C# linq中实现复杂查询的最佳方法,c#,linq,C#,Linq,在林克兰达,改变现状的最佳方式如下 类别在位置到其基本位置之间是唯一的。我应该首先加载立即位置类别。如果没有具有该名称的类别,则应加载其直接父级。此外,我有3级的位置 Id Name Location ========================== 1 Breakfast India 2 Breakfast TamilNadu 3 Breakfast Chennai 4 Dinner India 5 Dinner

在林克兰达,改变现状的最佳方式如下

类别在位置到其基本位置之间是唯一的。我应该首先加载立即位置类别。如果没有具有该名称的类别,则应加载其直接父级。此外,我有3级的位置

Id  Name        Location
==========================
1   Breakfast   India 
2   Breakfast   TamilNadu 
3   Breakfast   Chennai 
4   Dinner      India 
5   Dinner      TamilNadu 
6   Lunch       Chennai 
7   Combo       TamilNadu 
印度-1级,泰米尔纳德邦-2级,钦奈-2级 我需要结果

3   Breakfast   Chennai
5   Dinner      TamilNadu
6   Lunch       Chennai
7   Combo       TamilNadu
我的SQL查询是:

Declare @locationId UNIQUEIDENTIFIER = '7504657E-FEE4-E411-9505-BC305BB6199F'

BEGIN
    DECLARE @Locations TABLE(Id UNIQUEIDENTIFIER,LocationLevel int)

Set NoCount On

INSERT INTO @Locations 
SELECT AccountId,0 FROM Locations WHERE id = @locationId AND AccountId is not null
UNION  
SELECT FranchiseId,1 FROM Locations WHERE id = @locationId AND FranchiseId is not null
UNION  
SELECT @locationId,2

Set NoCount Off

SELECT C.* 
FROM Categories c
Join @Locations l on c.LocationId = l.Id
WHERE c.IsDeleted = 0 
AND (c.LocationId = @locationId OR (c.IsPublished = 1 And c.Status = 1))
AND l.LocationLevel = 
(
    Select Max(l1.LocationLevel) 
    From Categories c1 
    JOIN @Locations l1 on c1.LocationId = l1.Id 
    WHERE c1.Name=c.Name AND c1.IsDeleted = 0
)
Order by C.Name
END
我目前的问题是:

var categoryes = await CategoryRepository.GetCategoryForContext(ParentLocationIdList.Keys);
此处ParentLocationIdList包含所选位置的位置id和级别1 | 2 | 3

var result = categoryes.Join(ParentLocationIdList, c => c.LocationId, l => l.Key, (c, l) => new
            {
                Category = c,
                Level = l.Value,
                Name = c.Name
            });

            categoryes = result.GroupBy(g => g.Name).Select(s => s.First(d => d.Level == s.Max(m => m.Level)).Category).ToList();

            return categoryes;

您当前的lamba表达式是否不起作用,或者您正在寻找更好的方法?您好@ANewGuyInTown谢谢您的回复。查询工作正常。但我在寻找更好的方法