C#Linq嵌套选择不返回所有内容

问题描述 投票:0回答:1

我正在尝试通过Linq从多个表中选择信息。如果我取出最后一个Api查询from apis in Database.PluginApis where apis.PluginId == tenantPlugin.PluginId,则该查询有效。如果我重新输入查询,则会导致错误System.Collections.Generic.KeyNotFoundException: The given key 'Name' was not present in the dictionary.任何人都可以看到我在做什么错了吗?

var results = (from tenantPlugin in Database.TenantPlugins
                           where tenantPlugin.TenantId == tenantId

                           select new TenantPlugin
                           {
                               PluginId = tenantPlugin.PluginId,
                               IsEnabled = tenantPlugin.IsEnabled,
                               TenantId = tenantPlugin.TenantId,
                               TenantPluginId = tenantPlugin.TenantPluginId,
                               Plugin = (from plugin in Database.Plugins
                                         where plugin.PluginId == tenantPlugin.PluginId
                                         select new Plugin
                                         {
                                             PluginId = plugin.PluginId,
                                             Name = plugin.Name,
                                             Description = plugin.Description,
                                             ImagePath = plugin.ImagePath,
                                             IsActive = plugin.IsActive,
                                             Apis = (from apis in Database.PluginApis
                                                         where apis.PluginId == tenantPlugin.PluginId                                                             
                                                     select new PluginApi
                                                     {
                                                         Name = apis.Name
                                                     }).ToList<PluginApi>()
                                         }).FirstOrDefault<Plugin>()
                           });

            return results.ToList();
c# linq-to-sql entity-framework-core
1个回答
0
投票

似乎您有使用Include()方法的完美案例。试试:

var results = Database.TenantPlugins
              .Include(t => t.Plugin.Select(p => p.Apis))
              .Where(t => t.TenantId == tenantId);
© www.soinside.com 2019 - 2024. All rights reserved.