LINQ: 将 Guid 转换为字符串

4
我在执行这段代码时遇到了异常:
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)。
有人有解决方案吗?
非常感谢!
2个回答

7

在查询数据库后,您需要通过另一个查询来运行列表。

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
据我所知,您不能在linq查询中使用.ToString(),因为实体的linq不知道该如何处理它(因为它无法将其转换为SQL语句)...您可以将选择部分设置为:
select new
{
     Value = menu.ID,
     Test = menu.InternalName
}

然后只需使用foreach循环,将值复制到另一个列表中,同时将guid转换为字符串


1
这里不需要使用foreach,你可以使用额外的linq to objects查询。 - George Polevoy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接