在LINQ中使用A Parametr(字符串) [英] Using A Parametr (string) in LINQ
本文介绍了在LINQ中使用A Parametr(字符串)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
嗨EveryBody,我正在尝试使用listBox来选择搜索,
但我不能在LINQ中使用字符串si,我不知道如何使用它,
i制作了这段代码,但不知道如何使用si。
Hi EveryBody, i'm trying Too use a listBox for Select the Search,
but i can't use the string si in LINQ, i don't know how use it,
i made this code, but don't know how use the si.
var db = new DataClasses1DataContext();
int selectedIndex = listBox1.SelectedIndex;
string si = "";
if (selectedIndex == 0) si = "id" ;
if (selectedIndex == 1) si = "name";
if (selectedIndex == 2) si = "sex";
if (selectedIndex == 3) si = "address";
if (selectedIndex == 4) si = "phone";
if (selectedIndex == 5) si = "web";
var qsearch = db.users.Where(c => c.[i want use si in this place].Contains(textBox7.Text));
dataGridView1.DataSource = qsearch;
推荐答案
好的!
你需要构建动态表达式。这样的事情:
Good one!
You need to build dynamic expression. Something like this:
var parameter = Expression.Parameter(typeof(user), "p");
var property = Expression.Property(parameter, si);
var check = Expression.Call(property, typeof(String).GetMethod("Contains"), Expression.Constant(textBox7.Text));
var query = db.users;
var predicate = Expression.Lambda<Func<user, bool>>(check, parameter);
var result = query.Where(predicate);
要构建更复杂的查询,使用此处的方法: http://blog.micic.ch/net/entity-framework-和表达式查询 [ ^ ]
使用此代码我们可以解决此问题,使用开关解决
with this code we can solve this proble, use switch for solve
var db = new DataClasses1DataContext();
int selectedIndex = listBox1.SelectedIndex;
switch (selectedIndex)
{
case 0:
dataGridView1.DataSource = db.users.Where(c => c.id.ToString().Contains(...));
break;
....
}
string searchText = textBox7.Text;
var qsearch = db.users.Where(c => c.id.ToString().Contains(searchText) || c.name).Contains(searchText) || c.sex.ToString.Contains(searchText) ||
c.address.Contains(searchText) || c.phone.ToString().Contains(searchText) ||
c.web.ToString().Contains(searchText));
这篇关于在LINQ中使用A Parametr(字符串)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文