在LINQ中使用A Parametr(字符串) [英] Using A Parametr (string) in LINQ

查看:70
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆