C# 将Linq直接提取到数据表中的实体结果
我正在尝试使用Linq和实体创建动态菜单。我想将查询结果直接添加到datatable中。select查询(如下所示)引发异常。 例外情况: LINQ to实体无法识别方法“System.Data.DataRow” LoadDataRow(System.Object[],Boolean)'方法,此方法无法 被翻译成存储表达式 还有其他选择吗?下面是我的代码C# 将Linq直接提取到数据表中的实体结果,c#,linq,entity-framework,datatable,C#,Linq,Entity Framework,Datatable,我正在尝试使用Linq和实体创建动态菜单。我想将查询结果直接添加到datatable中。select查询(如下所示)引发异常。 例外情况: LINQ to实体无法识别方法“System.Data.DataRow” LoadDataRow(System.Object[],Boolean)'方法,此方法无法 被翻译成存储表达式 还有其他选择吗?下面是我的代码 DataTable dtMenu = new DataTable(); dtMenu.Columns.Add("MenuName", type
DataTable dtMenu = new DataTable();
dtMenu.Columns.Add("MenuName", typeof(string));
dtMenu.Columns.Add("SubMenuName", typeof(string));
dtMenu.Columns.Add("FileName", typeof(string));
var menuItems = (from vUser in dbMenu.VirtualUserMenuMaps
join menu in dbMenu.MenuMasters on vUser.MenuId equals menu.MenuId
join subMenu in dbMenu.SubMenuMasters on vUser.SubMenuId equals subMenu.SubMenuId
where vUser.VirtualId == virtualId
orderby menu.MenuId, subMenu.DisplayOrder
select dtMenu.LoadDataRow(
new object[] { menu.MenuName, subMenu.SubMenuName, subMenu.FileName }, false));
您不能调用无法转换为
SQL查询的方法,您应该按以下两个步骤执行:
var menuItems = from vUser in dbMenu.VirtualUserMenuMaps
join menu in dbMenu.MenuMasters on vUser.MenuId equals menu.MenuId
join subMenu in dbMenu.SubMenuMasters on vUser.SubMenuId equals subMenu.SubMenuId
where vUser.VirtualId == virtualId
orderby menu.MenuId, subMenu.DisplayOrder
select new { menu.MenuName, subMenu.SubMenuName, subMenu.FileName };
foreach(var row in menuItems)
dtMenu.LoadDataRow(new object[]{row.MenuName, row.SubMenuName, row.FileName}, false);