有没有办法可以将String作为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?
答案 0 :(得分:2)
您不需要StringBuilder
:
var query = context.Application;
if (InstId != String.Empty)
{
query = query.Where(a => a.Id == InstId);
}
if (BId != String.Empty)
{
query = query.Where(a => a.BId == BId);
}
if (CId != String.Empty)
{
query = query.Where(a => a.CId == CId);
}
var items = query.Join(/* your join here */).ToList();
查询不会被执行,直到ToList
或其他类似的方法被调用,因此您可以根据需要追加Where()
。
答案 1 :(得分:2)
虽然在很多情况下我并不认为这是一个很好的做法,但有一个Dynamic LINQ库允许你这样做。
一般情况下,如果可能的话,我建议您使用可以进行更强类型检查的内容,例如@MarcinJuraszak的响应或类似PredicateBuilder类的内容。