我桌子的其中一列有间距。我试图使用linq查询它,但是我收到了一个错误。代码是:
(from t1 in table1
join t2 in table2
on t1.t2_Id equals t2.Id
where t1.status == "Active"
where t2.column_value.Trim() == parameter
select t1).ToList();
错误是:
无效'其中'条件。实体成员正在调用无效 财产或方法。
如何修剪色谱柱?
答案 0 :(得分:2)
你需要这样做。要加入条件,您需要根据您的要求使用&&
或||
。
from t1 in table1
join t2 in table2
on t1.t2_Id equals t2.Id
where t1.status == "Active"
&& t1.column_value.Trim() == parameter
select t1).ToList();
答案 1 :(得分:2)
问题是.Trim()
无法在服务器端执行。您可以从错误
无效'其中'条件。实体成员正在调用无效的属性或方法。
并且Trim()
是唯一调用的属性或方法。我知道SQL Server应该能够处理Trim(),但不是每个提供者都可以(更新:确认提供者是CRM Linq提供者)。
您可以使用
(from t1 in table1
join t2 in table2
on t1.t2_Id equals t2.Id
where t1.status == "Active"
select t1).AsEnumerable().Where(r => r.column_value.Trim() == parameter)
.ToList();
AsEnumerable()导致Linq表达式的其余部分在客户端而不是在数据库中执行。这种方法的一个问题是,您很可能从数据库中检索的记录多于最终使用的记录,因为某些过滤是客户端的。