C# 将GUID转换为字符串实体框架
冒着问一个重复问题的风险,我似乎无法使这一点起作用。我想做的事情有很多例子,但是语法不太一样,没有任何效果。我在自学Linq。此查询从SQL server获取ID列表。如果没有“ToString()”,则表示“无法将GUID转换为字符串[]”。请提前告知并感谢C# 将GUID转换为字符串实体框架,c#,linq,entity-framework,asp.net-mvc-3,linq-to-sql,C#,Linq,Entity Framework,Asp.net Mvc 3,Linq To Sql,冒着问一个重复问题的风险,我似乎无法使这一点起作用。我想做的事情有很多例子,但是语法不太一样,没有任何效果。我在自学Linq。此查询从SQL server获取ID列表。如果没有“ToString()”,则表示“无法将GUID转换为字符串[]”。请提前告知并感谢 public string[] GetAllRoleIDs(string param) { using (DBEntities de = new DBEntities())
public string[] GetAllRoleIDs(string param)
{
using (DBEntities de = new DBEntities())
{
string[] roleset = (from p in de.MySQLView
where p.anotherfield == param
select p.RoleID.ToString()).Distinct().ToArray();
return roleset;
}
}
您希望
AsEnumerable()
强制本地计算ToString()
调用,而不是作为EF查询的一部分。例如:
using (DBEntities de = new DBEntities())
{
string[] roleset = de.MySQLView
.Where(p => p.anotherfield == param)
.Select(p => p.RoleID)
.Distinct()
.AsEnumerable()
.Select(guid => guid.ToString())
.ToArray();
return roleset;
}
(我把它从一个查询表达式转换为使用点表示法,只是因为两者之间的混合和匹配很麻烦,而且你只有一个
where
和一个select
。当然,如果你愿意,你可以使用一个查询表达式。)@user116923:这只是一种说法“直接调用扩展方法而不是使用查询表达式”。别担心:)