本帖最后由 supduo 于 2011-04-22 18:30:19 编辑

解决方案 »

  1.   

    要构建表达式树,第一次接触linq,就用这个有点困难,其实就是你原来的是拼接字符串,是弱类型的,表达式树是强类型的。http://www.cnblogs.com/JeffreyZhao/tag/%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%A0%91/
      

  2.   

    where obj1.Id == obj2.pId && obj1.type == obj2.type select..join on new {obj1.id, obj2.type} equals new {obj2.pid, obj2.type} select..
      

  3.   

    http://msdn.microsoft.com/zh-cn/library/bb882637(v=vs.90).aspx
      

  4.   

    http://msdn.microsoft.com/zh-cn/library/bb882637(v=vs.90).aspx
      

  5.   

    var result1=from a in .. where .. select a ;
    var result2=from a in result2 where .. select a;
    .
    .
    .
    .
      

  6.   

    要说麻烦的话,懂的人也不觉得麻烦,要说不麻烦吧,比拼接where又确实有很大的不同
      

  7.   

    我是这么写的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;
      

  8.   

    var Student=form u in table
             //@XX 为变量 无限制就付给他“”值就可以了
             where u.学校.IndexOf(@学校)>-1 and u.学生人数.IndexOf(@学生人数)>-1//写满六个条件
              select u;
      

  9.   

    http://blog.csdn.net/q107770540/archive/2010/07/09/5724013.aspx
      

  10.   

    弱弱的问一下,linq是神马东东
      

  11.   


            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”。
      

  12.   

    数据源是excel 文件,使用查询话题和专业约束做条件查询没有问题,可以使用其他条件就出现问题报错都是无法将类型为“System.Double”的对象强制转换为类型“System.String”。