我试图在linq查询中拆分字符串。我收到错误说“无法识别的表达式节点:ArrayIndex”。有谁知道如何实现这一目标?我的代码示例是:
List<Task> Result= (from t in TaskDB.Tasks
select new Task
{
Description = t.Description.Split('-')[0].ToString(),
Id = ts.id,
}).ToList();
答案 0 :(得分:8)
问题是查询的select
部分无法转换为SQL以在服务器上执行(因此“无法识别的表达式节点”错误)。尝试这样的事情,确保在客户端执行必要的代码:
var result = (from t in TaskDB.Tasks.AsEnumerable()
select new Task
{
Description = t.Description.Split('-')[0].ToString(),
Id = ts.id,
}).ToList();
这里的诀窍就是在选择项目之前调用AsEnumerable
扩展方法。
答案 1 :(得分:2)
你真的需要在服务器端进行字符串拆分吗?除非你真的需要在查询中使用它,或者如果它将节省大量带宽以仅传输字符串的第一部分,我将在“LINQ to SQL”部分中获取它,然后对其进行后处理使用LINQ到对象。像这样:
List<Task> Result= TaskDB.Tasks.AsEnumerable() // Don't do the rest in SQL!
.Select(t => new Task
{
Description = t.Description.Split('-')[0].ToString(),
Id = t.id,
}).ToList();
(在具有更多列的IDE中很容易格式化:)