[英]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.