【发布时间】:2013-04-09 12:50:36
【问题描述】:
有没有办法可以将字符串作为 Linq 执行? 我有一个 dynamci 查询,为此我必须将 Linq 表达式转换为字符串,然后附加具有一些条件查询的字符串 bulider。 所以整个表达式现在是字符串。 现在如何执行这个字符串? 我应该再次将此字符串转换为 Linq 吗? 如何进行?
StringBuilder sb = new StringBuilder();
if (InstId != String.Empty)
{
sb.Append("application.Id ==" + InstId);
}
if (BId != String.Empty)
{
sb.Append("&& application.BId ==" + BId);
}
if (CId != String.Empty)
{
sb.Append("&& application.CId ==" + CId);
}
String query=("from tables in context.Application .........
........join .........."+sb);
var q1=query;
现在如何执行这个q1?
【问题讨论】:
-
您有什么特殊原因想要将其构建为字符串?在不使用字符串表示的情况下执行此操作会更高效、更安全 (IMO)。
-
好吧,我提到了因为我必须在 where 子句中附加一些条件,所以我必须使用字符串生成器。
-
您可以在不使用字符串的情况下构建 LINQ 查询。您在需求方面显示的所有内容绝对可以在不使用字符串表示的情况下完成。
-
如果 Id 为空,我有不同的选择标准(因为我将它们作为字符串发送),所以每次我的查询都会改变。这只是一个示例,我将不得不执行它。
-
同样,none 这会阻止您在不使用字符串的情况下动态构建查询。 Marcin 的回答是前进的方向。我敢肯定,从长远来看,引入字符串转换只会带来痛苦。