我使用的是Dynamic Linq
与Linq to Entities
的毗连字符串使用LINQ到实体
所以,我测试的正常List<Person>
与此代码,一切的工作:
List<Person> per = new List<Person>();
per.Add(new Person { IdNo = "1", LastName = "test", MiddleName = "go", FirstName = "let" });
per.Add(new Person { IdNo = "2", LastName = "hope", MiddleName = "is", FirstName = "way" });
per.Add(new Person { IdNo = "3", LastName = "must", MiddleName = "be", FirstName = "human" });
per.Add(new Person { IdNo = "4", LastName = "thing", MiddleName = "anywhere", FirstName = "can" });
per.Add(new Person { IdNo = "5", LastName = "bird", MiddleName = "fly", FirstName = "away" });
List<object> paramObjects = new List<object>();
List<string> fields = new List<string>();
fields.Add("IdNo == @0");
paramObjects.Add("1");
fields.Add("or (LastName + \", \" + MiddleName + \" \" + FirstName).Contains(@1)");
paramObjects.Add("m");
var where = string.Join(" ", fields.ToArray());
var toParam = paramObjects.ToArray();
var query = per.AsQueryable().Where(where, toParam).ToList();
,当我在Linq To Entities
做法。
using(var con = new DbContext())
{
var query = con.Person.Where(where, toParam).ToList();
}
我得到这个错误:
LINQ to Entities does not recognize the method 'System.String Concat(System.Object, System.Object)' method, and this method cannot be translated into a store expression.
我的问题是:
如何使用动态的LINQ使用Linq To Entities
基地在我的例子Concat
字符串?任何人都可以帮助我?
你试过'ToString()'? – 2013-03-07 17:19:25
是不是像'(LastName + \“,\”+ MiddleName + \“\”+ FirstName).ToString()。含有(@ 1)'这将是错误→'LINQ to Entities不能识别该方法'System.String ToString()'' – spajce 2013-03-07 17:25:01
不,我的意思是'“或(LastName.ToString()+ \”,\“+ LastName.ToString()+ \”\“+ LastName.ToString())。Contains @ 1)“' – 2013-03-07 17:26:40