C#Linq列名作为变量

我有一个表,我想在变量列上进行查询。 喜欢:

private void query(string column, string value) { using (var db = new myDB()) { var s1 = (from c in db.Components where (**column** == **value**) select new {c.id, **column**}); } } 

我想说我想找一个供应商,那就像是:

 var s1 = (from c in db.Components where (c.supplier == "abc") select new {c.id, c.supplier}); 

有没有办法将列名称作为变量传递?

我猜这个例子很有用。

  void BindGridTypeSafe() { NorthwindDataContext northwind = new NorthwindDataContext(); var query = from p in northwind.Products where p.CategoryID == 3 && p.UnitPrice > 3 orderby p.SupplierID select p; GridView1.DataSource = query; GridView1.DataBind(); } void BindGridDynamic() { NorthwindDataContext northwind = new NorthwindDataContext(); var query = northwind.Products .Where("CategoryID = 3 AND UnitPrice > 3") .OrderBy("SupplierID"); GridView1.DataSource = query; GridView1.DataBind(); } 

一个很好的方法是使用Dynamic Linq

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

就像是:

 var s1 = (from c in db.Components where(column + "=" + value) select new {c.id, **column**});