执行此代码时出现异常:
var result = from menu in menuBus.GetMenus()
orderby menu.InternalName
select new
{
Value = menu.ID.ToString(),
Text = menu.InternalName
};
var result = allMenus.ToList();
错误消息显示:LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为存储的表达式。
所以,我猜Value = menu.ID.ToString()出了点问题。 ID属性定义为GUID(MS SQL中的UniqueIdentifier)。
有人有解决方案吗?
非常感谢!!!
答案 0 :(得分:6)
在查询数据库后,您需要通过另一个查询运行列表。
var result = (from menu in menuBus.GetMenus()
orderby menu.InternalName
select new
{
Value = menu.ID,
Text = menu.InternalName
}).ToList();
var result2 = (from menu in result select new {Value=menu.Value.ToString(),Text=menu.Text}).ToList();
答案 1 :(得分:1)
据我所知,你的linq查询中不能有.ToString()
,因为linq to entity不知道如何处理它(因为它无法将它转换为sql语句)。你可以将选择部分作为
select new
{
Value = menu.ID,
Test = menu.InternalName
}
然后只需使用foreach循环并将值复制到另一个列表中,同时将guid转换为字符串