2011-09-21 51 views
1

如何在Linq上使用动态列?如何在Linq上使用动态列?

例如;

var tmp = (from i in ESE.viw_kisiler 
         where (i.i_want_to_use_dynamic_column_in_here.Contains(kelime)) 
         select i); 

其他示例;

var a = (ComboBoxItems)ComboBox1.SelectedItem; 
    var ColumnName = a.Value; 

     var tmp = (from i in ESE.viw_kisiler 
           where (i.ColumnName.Contains(kelime)) 
           select i); 

谢谢大家。

+0

你不能。 Linq不支持这一点。 – Lazarus

+0

你能解释一下动态列的含义吗? –

+0

@拉扎鲁斯你可以但它需要相当一些工作 –

回答

1

感谢您的回复和评论。

我使用不同的方法;

var SQL1 = (from i in ESE.viw_kisiler 
          select i); 

       DataTable DT = LINQToDataTable(SQL1); 

       var SQL2 = (from t in DT.AsEnumerable() 
         where t.Field<string>(ColumnName).Contains(Word) 
         select t); 

首先,我是转换Linq查询一个DataTable,然后我尝试这些代码。 它正在工作!

+0

关于Contains方法存在“不区分大小写”。 我通过StringComparison和一个扩展方法来解决它。 'public static bool Contains(this string source,string toCheck,StringComparison comp) { return source.IndexOf(toCheck,comp)> = 0; }' '其中t.Field (columnName)方法。载(字,StringComparison.InvariantCultureIgnoreCase)' –

+0

http://stackoverflow.com/questions/444798/case-insensitive-containsstring/4217362#4217362 –

+0

HTTP:/ /blogs.msdn.com/b/jmanning/archive/2008/02/25/string-contains-really-should-have-an-overload-with-stringcomparison-specified.aspx –

1

。利用动态LINQ库:Dynamic LINQ (Part 1: Using the LINQ Dynamic Query Library)predicate builder

enter image description here

,你也可以检查:Dynamic query with Linq文章博客。

+0

我读你的写。你可以看看我的例子。我想用.Contains 谢谢。 –

+0

@ user956872 - 我认为动态linq库很容易满足你的需求 –

+0

我看到了很多例子。但仍然这样的方法是非常不同的。例如 例如它的工作; _ESE.viw_kisiler.Where(a => a.ad.Contains(kelime))_ 但仍然不能使用动态列名称。 Thaks。 –