我正在尝试获取列值并将其转换为格式化字符串值的列表,我尝试了下面的代码
List<string> _names = (from p in context.RakHolders select
string.Format("{0},{1}", p.Name.Split(',')[0].Trim(), p.Name.Split(',')[1].Trim()))
.ToList();
我的目的是获取列名称
中逗号之间没有不需要空格的名称列表我在执行此行时遇到异常
类型&#39; System.NotSupportedException&#39;的例外情况发生在 EntityFramework.SqlServer.dll但未在用户代码中处理
附加信息:LINQ to Entities无法识别方法
&#39; System.String格式(System.String,System.Object,System.Object)&#39;方法, 并且此方法无法转换为商店表达式。
如何使用LINQ
使这项工作[获取格式化列值列表]答案 0 :(得分:3)
List<string> _names = (from p in context.RakHolders select p.Name)
.ToList()
.Select(name => name.Split(','))
.Select(nameSplitted => string.Format("{0},{1}", nameSplitted[0].Trim(), nameSplitted[1].Trim() ))
.ToList();
说明:&#39; string.Format&#39;无法转换为SQL所以首先我们需要使用第一个ToList()&#39;来实现列表。 (这里我们得到名单,它比实现完整实体更有效)。将列表放在内存中,您可以将其转换为您需要的格式。
答案 1 :(得分:1)
EF正在尝试在SQL-Server上执行表达式。如果您首先获取项目,则不应该是一个问题:
List<string> _names = context.RakHolders
.Select(r => r.Name)
.ToList()
.Select(p => p.Split(','))
.Select(s => string.Format("{0},{1}", s[0].Trim(), s[1].Trim())
.ToList();