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”。 如果进程中存在某程序,启动该进程的程序,该怎么写呀? C#实现快速排序,但是不能实现完全排序,请高手帮忙!!! 求pudn 可用帐号下载一个程序 ?问个-_-点的问题! 高分求教 '播放音乐' 的问题 求SQL语句一条 局域网文件访问 反射中PropertyInfo.GetValue出错,参数计数不匹配 DataGrd中如何取得选择的行,行是多选的,谢谢! 欢迎讨论,来者有分 德州扑克 用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”。