linQ 如何实现多条件查询 本帖最后由 supduo 于 2011-04-22 18:30:19 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要构建表达式树,第一次接触linq,就用这个有点困难,其实就是你原来的是拼接字符串,是弱类型的,表达式树是强类型的。http://www.cnblogs.com/JeffreyZhao/tag/%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%A0%91/ where obj1.Id == obj2.pId && obj1.type == obj2.type select..join on new {obj1.id, obj2.type} equals new {obj2.pid, obj2.type} select.. http://msdn.microsoft.com/zh-cn/library/bb882637(v=vs.90).aspx http://msdn.microsoft.com/zh-cn/library/bb882637(v=vs.90).aspx var result1=from a in .. where .. select a ;var result2=from a in result2 where .. select a;.... 要说麻烦的话,懂的人也不觉得麻烦,要说不麻烦吧,比拼接where又确实有很大的不同 我是这么写的var item = from c in XXX where (combobox1.Text == "" ? true : c.Field<string>("品名") == combobox1.Text) && (combobox2.Text == "" ? true : c.Field<string>("条码") == combobox2.Text) && (combobox3.Text == "" ? true : c.Field<DateTime>("录入时间").Date >= combobox3.SelectedDate.Value.Date) && (combobox4.Text == "" ? true : c.Field<DateTime>("录入时间").Date <= combobox4.SelectedDate.Value.Date) select c; var Student=form u in table //@XX 为变量 无限制就付给他“”值就可以了 where u.学校.IndexOf(@学校)>-1 and u.学生人数.IndexOf(@学生人数)>-1//写满六个条件 select u; http://blog.csdn.net/q107770540/archive/2010/07/09/5724013.aspx 弱弱的问一下,linq是神马东东 private void button1_Click(object sender, EventArgs e) { string path = ""; try { path = filePath.Items[0].ToString(); } catch (Exception ex) { } DataTable DT = importExcelToDataSet(path, "Sheet1").Tables["[" + "Sheet1" + "$]"]; var q = from u in DT.AsEnumerable() select u; if (stuLevel.Text != "无限制") { q = q.Where(p => p.Field<stringe>("学生水平") == stuLevel.Text); } if (schLevel.Text != "无限制") { q = q.Where(p => p.Field<string>("学校等级") == schLevel.Text); } if (sex.Text != "无限制") { q = q.Where(p => p.Field<string>("学生性别") == sex.Text); } if (stuNum.Text != "无限制") { q = q.Where(p => p.Field<string>("学生人数") == stuNum.Text); } if (major.Text != "无限制") { q = q.Where(p => p.Field<string>("学生专业") == major.Text); } if (topic.Text != "无限制") { q = q.Where(p => p.Field<string>("话题类别") == topic.Text); } q.ToList(); dataGridView1.DataSource = q.CopyToDataTable(); }在查询话题和专业没有问题,查询其他项时回报错:无法将类型为“System.Double”的对象强制转换为类型“System.String”。 数据源是excel 文件,使用查询话题和专业约束做条件查询没有问题,可以使用其他条件就出现问题报错都是无法将类型为“System.Double”的对象强制转换为类型“System.String”。 网页上播放视频问题<基于土-豆的SWF播放器分享功能> vb.net里的with在c#里面怎么写呢 我写的代码实在是太罗嗦了,麻烦大家帮我改一下,谢谢了 类名做为变量 数据库数据的导入导出~~~ 强命名 DLL 中内嵌的公钥有什么用途吗? 救命啊 请高手帮我看看为什么我在相对路径上无法读到文件 在字符串中提取整数 mm急!在DataGrid中,获取指定的工作区的行? master 子页调用showModalDialog 接收返回值问题 德州扑克 用C# 牌型判断,有谁写过呀 C# 制作简易计算器的问题
var result2=from a in result2 where .. select a;
.
.
.
.
where (combobox1.Text == "" ? true : c.Field<string>("品名") == combobox1.Text)
&& (combobox2.Text == "" ? true : c.Field<string>("条码") == combobox2.Text)
&& (combobox3.Text == "" ? true : c.Field<DateTime>("录入时间").Date >= combobox3.SelectedDate.Value.Date)
&& (combobox4.Text == "" ? true : c.Field<DateTime>("录入时间").Date <= combobox4.SelectedDate.Value.Date)
select c;
//@XX 为变量 无限制就付给他“”值就可以了
where u.学校.IndexOf(@学校)>-1 and u.学生人数.IndexOf(@学生人数)>-1//写满六个条件
select u;
private void button1_Click(object sender, EventArgs e)
{
string path = "";
try
{
path = filePath.Items[0].ToString();
}
catch (Exception ex)
{
}
DataTable DT = importExcelToDataSet(path, "Sheet1").Tables["[" + "Sheet1" + "$]"];
var q = from u in DT.AsEnumerable()
select u;
if (stuLevel.Text != "无限制")
{
q = q.Where(p => p.Field<stringe>("学生水平") == stuLevel.Text);
}
if (schLevel.Text != "无限制")
{
q = q.Where(p => p.Field<string>("学校等级") == schLevel.Text);
}
if (sex.Text != "无限制")
{
q = q.Where(p => p.Field<string>("学生性别") == sex.Text);
}
if (stuNum.Text != "无限制")
{
q = q.Where(p => p.Field<string>("学生人数") == stuNum.Text);
}
if (major.Text != "无限制")
{
q = q.Where(p => p.Field<string>("学生专业") == major.Text);
}
if (topic.Text != "无限制")
{
q = q.Where(p => p.Field<string>("话题类别") == topic.Text);
}
q.ToList();
dataGridView1.DataSource = q.CopyToDataTable();
}在查询话题和专业没有问题,查询其他项时回报错:无法将类型为“System.Double”的对象强制转换为类型“System.String”。