簡體   English   中英

C# Linq 嵌套選擇不返回所有內容

[英]C# Linq nested selects not returning everything

我正在嘗試通過 Linq 從多個表中選擇信息。 如果我from apis in Database.PluginApis where apis.PluginId == tenantPlugin.PluginId取出最后一個 Api 查詢from apis in Database.PluginApis where apis.PluginId == tenantPlugin.PluginId則該查詢有效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();

似乎您有一個完美的案例來使用Include()方法。 嘗試:

var results = Database.TenantPlugins
              .Include(t => t.Plugin.Select(p => p.Apis))
              .Where(t => t.TenantId == tenantId);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM